#!/bin/sh
# This is a shell archive (produced by GNU sharutils 4.1).
# To extract the files from this archive, save it to some FILE, remove
# everything before the `!/bin/sh' line above, then type `sh FILE'.
#
# Made on 1996-10-06 16:10 JST by <kono@leo.ie.u-ryukyu.ac.jp>.
# Source directory was `/user/kono/src/nkf/nkf16'.
#
# Existing files will *not* be overwritten unless `-c' is specified.
#
# This shar contains:
# length mode       name
# ------ ---------- ------------------------------------------
#  55300 -rw-r--r-- nkf.c
#  13777 -rw-r--r-- nkf.doc
#   3296 -rw-r--r-- nkf.1
#   7364 -rw-r--r-- nkf.1j
#  10300 -rw-r--r-- nkf_test.pl
#
touch -am 1231235999 $$.touch >/dev/null 2>&1
if test ! -f 1231235999 && test -f $$.touch; then
  shar_touch=touch
else
  shar_touch=:
  echo
  echo 'WARNING: not restoring timestamps.  Consider getting and'
  echo "installing GNU \`touch', distributed in GNU File Utilities..."
  echo
fi
rm -f 1231235999 $$.touch
#
# ============= nkf.c ==============
if test -f 'nkf.c' && test X"$1" != X"-c"; then
  echo 'x - skipping nkf.c (file already exists)'
else
  echo 'x - extracting nkf.c (text)'
  sed 's/^X//' << 'SHAR_EOF' > 'nkf.c' &&
/** Network Kanji Filter. (PDS Version)
************************************************************************
** Copyright (C) 1987, Fujitsu LTD. (Itaru ICHIKAWA)
** $@O"Mm@h!'(J $@!J3t!KIY;NDL8&5f=j!!%=%U%H#38&!!;T@n!!;j(J 
** $@!J(JE-Mail Address: ichikawa@flab.fujitsu.co.jp$@!K(J
** Copyright (C) 1996
** $@O"Mm@h!'(J $@N05eBg3X>pJs9)3X2J(J $@2OLn(J $@??<#(J  mine/X0208 support
** $@!J(JE-Mail Address: kono@ie.u-ryukyu.ac.jp$@!K(J
** $@O"Mm@h!'(J COW for DOS & Win16 & Win32 & OS/2
** $@!J(JE-Mail Address: GHG00637@niftyserve.or.p$@!K(J
**    $@1DMx$rL\E*$H$7$J$$8B$j!"$3$N%=!<%9$N$$$+$J$k(J
**    $@J#<L!$2~JQ!$=$@5$b5vBz$7$^$9!#$=$N:]$K$O!"$3$NItJ,$r;D$9$3$H!#(J
**    $@$3$N%W%m%0%i%`$K$D$$$F$OFC$K2?$NJ]>Z$b$7$J$$!"0-$7$+$i$:!#(J
**    Everyone is permitted to do anything on this program 
**    including copying, modifying, improving 
**    as long as you don't try to make money off it, 
**    or pretend that you wrote it.
**    i.e., the above copyright notice has to appear in all copies.
**    THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE.
***********************************************************************/
X
static char *CopyRight =
X      "Copyright (C) 1987, FUJITSU LTD. (I.Ichikawa),1996 S. Kono, COW";
static char *Version =
X      "1.62";
static char *Patchlevel =
X      "4/9609/Shinji Kono, COW";
X
/*
**
**
**
** USAGE:       nkf [flags] [file] 
**
** Flags:
** b    Output is bufferred             (DEFAULT)
** u    Output is unbufferred
**
** t    no operation
**
** j    Outout code is JIS 7 bit        (DEFAULT SELECT) 
** s    Output code is MS Kanji         (DEFAULT SELECT) 
** e    Output code is AT&T JIS         (DEFAULT SELECT) 
** l    Output code is JIS 7bit and ISO8859-1 Latin-1
**
** m    MIME conversion for ISO-2022-JP
** i_ Output sequence to designate JIS-kanji (DEFAULT_J)
** o_ Output sequence to designate single-byte roman characters (DEFAULT_R)
**
** r  {de/en}crypt ROT13/47
**
** v  display Version
**
** T  Text mode output        (for MS-DOS)
**
** x    Do not convert X0201 kana into X0208
** Z    Convert X0208 alphabet to ASCII
**
** f60  fold option
**
** m    MIME decode
** B    try to fix broken JIS, missing Escape
** B[1-9]  broken level
**
** O   Output to 'nkf.out' file 
** d   Delete \r in line feed 
** c   Add \r in line feed 
**/
/******************************/
/* $@%G%U%)%k%H$N=PNO%3!<%IA*Br(J */
/* Select DEFAULT_CODE */
#define DEFAULT_CODE_JIS 
/* #define DEFAULT_CODE_SJIS */
/* #define DEFAULT_CODE_EUC */
/******************************/
X
#if (defined(__TURBOC__) || defined(LSI_C)) && !defined(MSDOS)
#define MSDOS
#endif
X
#include <stdio.h>
X
#if defined(MSDOS) || defined(__OS2__) 
#include <stdlib.h>
#include <fcntl.h>
#include <io.h>
#endif
X
#ifdef MSDOS
#ifdef LSI_C
#define setbinmode(fp) fsetbin(fp)
#else /* Microsoft C, Turbo C */
#define setbinmode(fp) setmode(fileno(fp), O_BINARY)
#endif
#else /* UNIX,OS/2 */
#define setbinmode(fp)
#endif
X
#ifdef _IOFBF /* SysV and MSDOS */
#define       setvbuffer(fp, buf, size)       setvbuf(fp, buf, _IOFBF, size)
#else /* BSD */
#define       setvbuffer(fp, buf, size)       setbuffer(fp, buf, size)
#endif
X
/*Borland C++ 4.5 EasyWin*/
#if defined(__TURBOC__) && defined(_Windows) && !defined(__WIN32__) /*Easy Win */
#define         EASYWIN
#include <windows.h>
#endif
X
#define         FALSE   0
#define         TRUE    1
X
/* state of output_mode and input_mode  */
X
#define         ASCII           0
#define         X0208           1
#define         X0201           2
#define         NO_X0201        3
#define         JIS_INPUT       4
#define         SJIS_INPUT      5
#define         LATIN1_INPUT    6
#define         FIXED_MIME      7
#define         DOUBLE_SPACE    -2
X
#define         NL      0x0a
#define         ESC     0x1b
#define         SP      0x20
#define         AT      0x40
#define         SSP     0xa0
#define         DEL     0x7f
#define         SI      0x0f
#define         SO      0x0e
#define         SSO     0x8e
X
#define         HOLD_SIZE       32
#define         IOBUF_SIZE      16384
X
#define         DEFAULT_J       'B'
#define         DEFAULT_R       'B'
X
#define         SJ0162  0x00e1          /* 01 - 62 ku offset */
#define         SJ6394  0x0161          /* 63 - 94 ku offset */
X
X
/* MIME preprocessor */
X
#define GETC(p) ((!mime_mode)?getc(p):mime_getc(p))
#define UNGETC(c,p)     ((!mime_mode)?ungetc(c,p):mime_ungetc(c))
X
X
#ifdef EASYWIN /*Easy Win */
extern POINT _BufferSize;
#endif
X
/* buffers */
X
char            stdibuf[IOBUF_SIZE];
char            stdobuf[IOBUF_SIZE];
unsigned char   hold_buf[HOLD_SIZE*2];
int             hold_count;
X
/* MIME preprocessor fifo */
X
#define MIME_BUF_SIZE   (1024)    /* 2^n ring buffer */
#define MIME_BUF_MASK   (MIME_BUF_SIZE-1)   
#define Fifo(n)         mime_buf[(n)&MIME_BUF_MASK]
unsigned char           mime_buf[MIME_BUF_SIZE];
unsigned int            mime_top = 0;
unsigned int            mime_last = 0;  /* decoded */
unsigned int            mime_input = 0; /* undecoded */
X
/* flags */
int             unbuf_f = FALSE;
int             estab_f = FALSE;
int             nop_f = FALSE;
int             binmode_f = TRUE;       /* binary mode */
int             rot_f = FALSE;          /* rot14/43 mode */
int             input_f = FALSE;        /* non fixed input code  */
int             alpha_f = FALSE;        /* convert JIx0208 alphbet to ASCII */
int             mime_f = FALSE;         /* convert MIME B base64 or Q */
int             mimebuf_f = FALSE;      /* MIME buffered input */
int             broken_f = FALSE;       /* convert ESC-less broken JIS */
int             iso8859_f = FALSE;      /* ISO8859 through */
#if defined(MSDOS) || defined(__OS2__) 
int             x0201_f = TRUE;         /* Assume JISX0201 kana */
#else
int             x0201_f = NO_X0201;     /* Assume NO JISX0201 */
#endif
X
/* X0208 -> ASCII converter */
X
int             c1_return;
X
/* fold parameter */
int line = 0;    /* chars in line */
int prev = 0;
int             fold_f  = FALSE;
int             fold_len  = 0;
X
/* options */
char            kanji_intro = DEFAULT_J,
X                ascii_intro = DEFAULT_R;
X
/* Folding */
X
int fold();
#define FOLD_MARGIN  10
#define DEFAULT_FOLD 60
X
/* converters */
X
int             (*iconv) (register int c2,register int c1);   /* s_iconv or oconv */
int             (*oconv) (register int c2,register int c1);   /* [ejs]_oconv */
X
/* Global states */
int             output_mode = ASCII,    /* output kanji mode */
X                input_mode =  ASCII,    /* input kanji mode */
X                shift_mode =  FALSE;    /* TRUE shift out, or X0201  */
int             mime_mode =   FALSE;    /* MIME mode B base64, Q hex */
X
/* X0208 -> ASCII translation table */
X
extern unsigned char cv[],dv[],ev[],fv[];
X
int             file_out = FALSE;
int             add_cr = FALSE;
int             del_cr = FALSE;
int             end_check;
X
/*      function prototype  */
X
extern  int     main(int argc,char **argv);
extern  int     noconvert(register FILE *f);
extern  int     convert(register FILE *f);
extern  int     h_conv(register FILE *f,register int c2,register int c1);
extern  int     push_hold_buf(int c2,int c1);
extern  int     s_iconv(register int c2,register int c1);
extern  int     e_oconv(register int c2,register int c1);
extern  int     s_oconv(register int c2,register int c1);
extern  int     j_oconv(register int c2,register int c1);
extern  int     fold(register int c2,register int c1);
extern  int     pre_convert(register int c1,register int c2);
extern  int     mime_begin(FILE *f);
extern  int     mime_getc(FILE *f);
extern  int     mime_ungetc(unsigned int c);
extern  int     mime_integrity(FILE *f,unsigned char *p);
extern  int     base64decode(int c);
extern  int     usage(void);
X
X
X
main (argc, argv)
X    int             argc;
X    char          **argv;
{
X    register FILE  *fin;
X    register char  *cp;
X
#ifdef EASYWIN /*Easy Win */
X    _BufferSize.y = 400;/*Set Scroll Buffer Size*/
#endif
#ifdef DEFAULT_CODE_JIS
X    oconv = j_oconv; /* DEFAULT Code is JIS */
#endif
#ifdef DEFAULT_CODE_SJIS
X    oconv = s_oconv; /* DEFAULT Code is S-JIS */
#endif
#ifdef DEFAULT_CODE_EUC
X    oconv = e_oconv; /* DEFAULT Code is EUC */
#endif
X
X    for (argc--,argv++; (argc > 0) && **argv == '-'; argc--, argv++) {
X        cp = *argv;
X        while (*cp) {
X            switch (*cp++) {
X            case 'b':           /* buffered mode */
X                unbuf_f = FALSE;
X                continue;
X            case 'u':           /* non bufferd mode */
X                unbuf_f = TRUE;
X                continue;
X            case 't':           /* transparent mode */
X                nop_f = TRUE;
X                continue;
X            case 'j':           /* JIS output */
X            case 'n':
X                oconv = j_oconv;
X                continue;
X            case 'e':           /* AT&T EUC output */
X                oconv = e_oconv;
X                continue;
X            case 's':           /* SJIS output */
X                oconv = s_oconv;
X                continue;
X            case 'l':           /* ISO8859 Latin-1 support, no conversion */
X                iso8859_f = TRUE;  /* Only compatible with ISO-2022-JP */
X                input_f = LATIN1_INPUT;
X                continue;
X            case 'i':           /* Kanji IN ESC-$-@/B */
X                if(*cp=='@'||*cp=='B') 
X                    kanji_intro = *cp++;
X                continue;
X            case 'o':           /* ASCII IN ESC-(-J/B */
X                if(*cp=='J'||*cp=='B'||*cp=='H') 
X                    ascii_intro = *cp++;
X                continue;
X            case 'r':
X                rot_f = TRUE;
X                continue;
#if defined(MSDOS) || defined(__OS2__) 
X            case 'T':
X                binmode_f = FALSE;
X                continue;
#endif
X            case 'v':
X                usage();
X                exit(1);
X                break;
X            /* Input code assumption */
X            case 'J':   /* JIS input */
X            case 'E':   /* AT&T EUC input */
X                input_f = JIS_INPUT;
X                continue;
X            case 'S':   /* MS Kanji input */
X                input_f = SJIS_INPUT;
X                if(x0201_f==NO_X0201) x0201_f=TRUE;
X                continue;
X            case 'Z':   /* Convert X0208 alphabet to asii */
X                /*  bit:0   Convert X0208
X                    bit:1   Convert Kankaku to one space
X                    bit:2   Convert Kankaku to two spaces
X                */
X                if('9'>= *cp && *cp>='0') 
X                    alpha_f |= 1<<(*cp++ -'0');
X                else 
X                    alpha_f |= TRUE;
X                continue;
X            case 'x':   /* Convert X0201 kana to X0208 or X0201 Conversion */
X                x0201_f = FALSE;    /* No X0201->X0208 conversion */
X                /* accept  X0201
X                        ESC-(-I     in JIS, EUC, MS Kanji
X                        SI/SO       in JIS, EUC, MS Kanji
X                        SSO         in EUC, JIS, not in MS Kanji
X                        MS Kanji (0xa0-0xdf) 
X                   output  X0201
X                        ESC-(-I     in JIS (0x20-0x5f)
X                        SSO         in EUC (0xa0-0xdf)
X                        0xa0-0xd    in MS Kanji (0xa0-0xdf) 
X                */
X                continue;
X            case 'X':   /* Assume X0201 kana */
X                /* Default value is NO_X0201 for EUC/MS-Kanji mix */
X                x0201_f = TRUE;
X                continue;
X            case 'f':   /* folding -f60 or -f */
X                fold_f = TRUE;
X                fold_len = atoi(cp);
X                if(!(0<fold_len && fold_len<BUFSIZ)) 
X                    fold_len = DEFAULT_FOLD;
X                while('0'<= *cp && *cp <='9') cp++;
X                continue;
X            case 'm':   /* MIME support */
X                mime_f = TRUE;
X                if(*cp=='B'||*cp=='Q') {
X                    mime_mode = *cp++;
X                    mimebuf_f = FIXED_MIME;
X                }
X                continue;
X            case 'B':   /* Broken JIS support */
X                /*  bit:0   no ESC JIS
X                    bit:1   allow any x on ESC-(-x or ESC-$-x
X                    bit:2   reset to ascii on NL
X                */
X                if('9'>= *cp && *cp>='0') 
X                    broken_f |= 1<<(*cp++ -'0');
X                else 
X                    broken_f |= TRUE;
X                continue;
X            case 'O':/* for Output file */
X                file_out = TRUE;
X                continue;
X            case 'c':/* add cr code */
X                add_cr = TRUE;
X                continue;
X            case 'd':/* delete cr code */
X                del_cr = TRUE;
X                continue;
X            default:
X                /* bogus option but ignored */
X                continue;
X            }
X        }
X    }
X
X    if(iso8859_f && (oconv != j_oconv || !x0201_f )) {
X        fprintf(stderr,"Mixed ISO8859/JISX0201/SJIS/EUC output is not allowed.\n");
X        exit(1);
X    }
X
X    if(binmode_f == TRUE)
#ifdef __OS2__
X    if(freopen("","wb",stdout) == NULL) 
X        return (-1);
#else
X    setbinmode(stdout);
#endif
X
X    if(unbuf_f)
X      setbuf (stdout, (char *) NULL);
X    else
X      setvbuffer (stdout, stdobuf, IOBUF_SIZE);
X
X    if(argc == 0) {
X      if(binmode_f == TRUE)
#ifdef __OS2__
X      if(freopen("","rb",stdin) == NULL) return (-1);
#else
X      setbinmode(stdin);
#endif
X      setvbuffer (stdin, stdibuf, IOBUF_SIZE);
X      if(nop_f)
X          noconvert (stdin);
X      else
X          convert (stdin);
X    } else {
X      while (argc--) {
X          if((fin = fopen (*argv++, "r")) == NULL) {
X              perror (*--argv);
X              return (-1);
X          } else {
/* reopen file for stdout */
X              if(file_out == TRUE){ 
X                  if(argc == 1 ) {
X                      if(freopen(*argv++, "w", stdout) == NULL) {
X                          perror (*--argv);
X                          return (-1);
X                      }
X                      argc--;
X                  } else {
X                      if(freopen("nkf.out", "w", stdout) == NULL) {
X                         perror (*--argv);
X                         return (-1);
X                      }
X                  }
X                  if(binmode_f == TRUE) {
#ifdef __OS2__
X                      if(freopen("","wb",stdout) == NULL) 
X                           return (-1);
#else
X                      setbinmode(stdout);
#endif
X                  }
X              }
X              if(binmode_f == TRUE)
#ifdef __OS2__
X                 if(freopen("","rb",fin) == NULL) 
X                    return (-1);
#else
X                 setbinmode(fin);
#endif 
X              setvbuffer (fin, stdibuf, IOBUF_SIZE);
X              if(nop_f)
X                  noconvert (fin);
X              else
X                  convert (fin);
X              fclose (fin);
X          }
X      }
X    }
#ifdef EASYWIN /*Easy Win */
X    if(file_out == FALSE) 
X        scanf("%d",&end_check);
X    else 
X        fclose(stdout);
#else /* for Other OS */
X    if(file_out == TRUE) 
X        fclose(stdout);
#endif 
X    return (0);
}
X
int
noconvert (f)
X    register FILE  *f;
{
X    register int    c;
X
X    while ((c = getc (f)) != EOF)
X      putchar (c);
X    return 1;
}
X
X
X
X
int
convert (f)
X    register FILE  *f;
{
X    register int    c1,
X                    c2;
X
X    c2 = 0;
X
X    if(input_f == JIS_INPUT || input_f == LATIN1_INPUT) {
X        estab_f = TRUE; iconv = oconv;
X    } else if(input_f == SJIS_INPUT) {
X        estab_f = TRUE;  iconv = s_iconv;
X    } else {
X        estab_f = FALSE; iconv = oconv;
X    }
X    input_mode = ASCII;
X    output_mode = ASCII;
X    shift_mode = FALSE;
X
#define NEXT continue      /* no output, get next */
#define SEND ;             /* output c1 and c2, get next */
#define LAST break         /* end of loop, go closing  */
X
X    while ((c1 = GETC (f)) != EOF) {
X        if(!c2 && !input_mode && c1<DEL && !mime_mode && !output_mode 
X                && !shift_mode && !fold_f && !rot_f) {
X            /* plain ASCII tight loop, no conversion and no fold  */
X            while(c1!='=' && c1!=SO && c1!=EOF && 
X                    c1!=ESC && c1!='$' && c1<DEL && c1!='\r' && c1!='\n') {
X                putchar(c1);
X                c1 = getc(f);
X            }
X            if(c1==EOF) LAST;
X        }
X        if(c2) {
X            /* second byte */
X            if(c2 > DEL) {
X                /* in case of 8th bit is on */
X                if(!estab_f) {
X                    /* in case of not established yet */
X                    if(c1 > SSP) {
X                        /* It is still ambiguious */
X                        h_conv (f, c2, c1);
X                        c2 = 0;
X                        NEXT;
X                    } else if(c1 < AT) {
X                        /* ignore bogus code */
X                        c2 = 0;
X                        NEXT;
X                    } else {
X                        /* established */
X                        /* it seems to be MS Kanji */
X                        estab_f = TRUE;
X                        iconv = s_iconv;
X                        SEND;
X                    }
X                } else
X                    /* in case of already established */
X                    if(c1 < AT) {
X                        /* ignore bogus code */
X                        c2 = 0;
X                        NEXT;
X                    } else
X                        SEND;
X            } else
X                /* 7 bit code */
X                /* it might be kanji shitfted */
X                if((c1 == DEL) || (c1 <= SP)) {
X                    /* ignore bogus first code */
X                    c2 = 0;
X                    NEXT;
X                } else
X                    SEND;
X        } else {
X            /* first byte */
X            if(c1 > DEL) {
X                /* 8 bit code */
X                if(!estab_f && !iso8859_f) {
X                    /* not established yet */
X                    if(c1 < SSP) {
X                        /* it seems to be MS Kanji */
X                        estab_f = TRUE;
X                        iconv = s_iconv;
X                    } else if(c1 < 0xe0) {
X                        /* it seems to be EUC */
X                        estab_f = TRUE;
X                        iconv = oconv;
X                    } else {
X                        /* still ambiguious */
X                    }
X                    c2 = c1;
X                    NEXT;
X                } else { /* estab_f==TRUE */
X                    if(iso8859_f) {
X                        SEND;
X                    } else if(SSP<=c1 && c1<0xe0 && iconv == s_iconv) {
X                        /* SJIS X0201 Case... */
X                        /* This is too arrogant, but ... */
X                        if(x0201_f==NO_X0201) {
X                            iconv = oconv;
X                            c2 = c1;
X                            NEXT;
X                        } else 
X                        if(x0201_f) {
X                            if(dv[(c1-SSP)*2]||ev[(c1-SSP)*2]) {
X                            /* look ahead for X0201/X0208conversion */
X                                if((c2 = GETC (f)) == EOF) {
X                                    (*oconv)(cv[(c1-SSP)*2],cv[(c1-SSP)*2+1]);
X                                    LAST;
X                                } else if(c2==(0xde)) { /* $@ByE@(J */
X                                    (*oconv)(dv[(c1-SSP)*2],dv[(c1-SSP)*2+1]);
X                                    c2=0; 
X                                    NEXT;
X                                } else if(c2==(0xdf)&&ev[(c1-SSP)*2]) { 
X                                    /* $@H>ByE@(J */
X                                    (*oconv)(ev[(c1-SSP)*2],ev[(c1-SSP)*2+1]);
X                                    c2=0; 
X                                    NEXT;
X                                } 
X                                UNGETC(c2,f); c2 = 0;
X                            }
X                            (*oconv)(cv[(c1-SSP)*2],cv[(c1-SSP)*2+1]);
X                            NEXT;
X                        } else
X                            SEND;
X                    } else if(c1==SSO && iconv != s_iconv) {
X                        /* EUC X0201 Case */
X                        /* This is too arrogant
X                        if(x0201_f == NO_X0201) {
X                            estab_f = FALSE; 
X                            c2 = 0;  
X                            NEXT;
X                        } */
X                        c1 = GETC (f);  /* skip SSO */
X                        euc_1byte_check:
X                        if(x0201_f && SSP<=c1 && c1<0xe0) {
X                            if(dv[(c1-SSP)*2]||ev[(c1-SSP)*2]) {
X                                if((c2 = GETC (f)) == EOF) {
X                                    (*oconv)(cv[(c1-SSP)*2],cv[(c1-SSP)*2+1]);
X                                    LAST;
X                                }
X                                /* forward lookup $@ByE@(J/$@H>ByE@(J */
X                                if(c2 != SSO) {
X                                    UNGETC(c2,f); c2 = 0; 
X                                    (*oconv)(cv[(c1-SSP)*2],cv[(c1-SSP)*2+1]);
X                                    NEXT;
X                                } else if((c2 = GETC (f)) == EOF) {
X                                    (*oconv)(cv[(c1-SSP)*2],cv[(c1-SSP)*2+1]);
X                                    (*oconv)(0,SSO); 
X                                    LAST;
X                                } else if(c2==(0xde)) { /* $@ByE@(J */
X                                    (*oconv)(dv[(c1-SSP)*2],dv[(c1-SSP)*2+1]);
X                                    c2=0; 
X                                    NEXT;
X                                } else if(c2==(0xdf)&&ev[(c1-SSP)*2]) { 
X                                    /* $@H>ByE@(J */
X                                    (*oconv)(ev[(c1-SSP)*2],ev[(c1-SSP)*2+1]);
X                                    c2=0; 
X                                    NEXT;
X                                } else {
X                                    (*oconv)(cv[(c1-SSP)*2],cv[(c1-SSP)*2+1]);
X                                    /* we have to check this c2 */
X                                    /* and no way to push back SSO */
X                                    c1 = c2; c2 = 0;
X                                    goto euc_1byte_check;
X                                }
X                            }
X                            (*oconv)(cv[(c1-SSP)*2],cv[(c1-SSP)*2+1]);
X                            NEXT;
X                        } else 
X                            SEND;
X                    } else if(c1 < SSP && iconv != s_iconv) {
X                        /* strange code in EUC */
X                        iconv = s_iconv;  /* try SJIS */
X                        c2 = c1;
X                        NEXT;
X                    } else {
X                       /* already established */
X                       c2 = c1;
X                       NEXT;
X                    }
X                }
X            } else if((c1 > SP) && (c1 != DEL)) {
X                /* in case of Roman characters */
X                if(shift_mode) { 
X                    c1 |= 0x80;
X                    /* output 1 shifted byte */
X                    if(x0201_f && (!iso8859_f||input_mode==X0201) && 
X                            SSP<=c1 && c1<0xe0 ) {
X                        if(dv[(c1-SSP)*2]||ev[(c1-SSP)*2]) {
X                            if((c2 = GETC (f)) == EOF) {
X                                (*oconv)(cv[(c1-SSP)*2],cv[(c1-SSP)*2+1]);
X                                LAST;
X                            } else if(c2==(0xde&0x7f)) { /* $@ByE@(J */
X                                (*oconv)(dv[(c1-SSP)*2],dv[(c1-SSP)*2+1]);
X                                c2=0; 
X                                NEXT;
X                            } else if(c2==(0xdf&0x7f)&&ev[(c1-SSP)*2]) {  
X                                /* $@H>ByE@(J */
X                                (*oconv)(ev[(c1-SSP)*2],ev[(c1-SSP)*2+1]);
X                                c2=0; 
X                                NEXT;
X                            }
X                            UNGETC(c2,f); c2 = 0;
X                        }
X                        (*oconv)(cv[(c1-SSP)*2],cv[(c1-SSP)*2+1]);
X                        NEXT;
X                    } else
X                        SEND;
X                } else if(c1 == '(' && broken_f && input_mode == X0208
X                        && !mime_mode ) {
X                    /* Try to recover missing escape */
X                    if((c1 = GETC (f)) == EOF) {
X                        (*oconv) (0, '(');
X                        LAST;
X                    } else {
X                        if(c1 == 'B' || c1 == 'J' || c1 == 'H') {
X                            input_mode = ASCII; shift_mode = FALSE;
X                            NEXT;
X                        } else {
X                            (*oconv) (0, '(');
X                            /* do not modify various input_mode */
X                            /* It can be vt100 sequence */
X                            SEND;
X                        }
X                    }
X                } else if(input_mode == X0208) {
X                    /* in case of Kanji shifted */
X                    c2 = c1;
X                    NEXT;
X                    /* goto next_byte */
X                } else if(c1 == '=' && mime_f && !mime_mode ) {
X                    if((c1 = getc (f)) == EOF) {
X                        (*oconv) (0, '=');
X                        LAST;
X                    } else if(c1 == '?') {
X                        /* =? is mime conversion start sequence */
X                        if(mime_begin(f) == EOF) /* check in detail */
X                            LAST;
X                        else
X                            NEXT;
X                    } else {
X                        (*oconv) (0, '=');
X                        ungetc(c1,f);
X                        NEXT;
X                    }
X                } else if(c1 == '$' && broken_f && !mime_mode) {
X                    /* try to recover missing escape */
X                    if((c1 = GETC (f)) == EOF) {
X                        (*oconv) (0, '$');
X                        LAST;
X                    } else if(c1 == '@'|| c1 == 'B') {
X                        /* in case of Kanji in ESC sequence */
X                        input_mode = X0208;
X                        shift_mode = FALSE;
X                        NEXT;
X                    } else {
X                        /* sorry */
X                        (*oconv) (0, '$');
X                        (*oconv) (0, c1);
X                        NEXT;
X                    }
X                } else
X                    SEND;
X            } else if(c1 == SI) {
X                shift_mode = FALSE; 
X                NEXT;
X            } else if(c1 == SO) {
X                shift_mode = TRUE; 
X                NEXT;
X            } else if(c1 == ESC ) {
X                if((c1 = GETC (f)) == EOF) {
X                    (*oconv) (0, ESC);
X                    LAST;
X                } else if(c1 == '$') {
X                    if((c1 = GETC (f)) == EOF) {
X                        (*oconv) (0, ESC);
X                        (*oconv) (0, '$');
X                        LAST;
X                    } else if(c1 == '@'|| c1 == 'B') {
X                        /* This is kanji introduction */
X                        input_mode = X0208;
X                        shift_mode = FALSE;
X                        NEXT;
X                    } else if(broken_f&0x2) {
X                        input_mode = X0208;
X                        shift_mode = FALSE;
X                        NEXT;
X                    } else {
X                        (*oconv) (0, ESC);
X                        (*oconv) (0, '$');
X                        (*oconv) (0, c1);
X                        NEXT;
X                    }
X                } else if(c1 == '(') {
X                    if((c1 = GETC (f)) == EOF) {
X                        (*oconv) (0, ESC);
X                        (*oconv) (0, '(');
X                        LAST;
X                    } else {
X                        if(c1 == 'I') {
X                            /* This is X0201 kana introduction */
X                            input_mode = X0201; shift_mode = X0201;
X                            NEXT;
X                        } else if(c1 == 'B' || c1 == 'J' || c1 == 'H') {
X                            /* This is X0208 kanji introduction */
X                            input_mode = ASCII; shift_mode = FALSE;
X                            NEXT;
X                        } else if(broken_f&0x2) {
X                            input_mode = ASCII; shift_mode = FALSE;
X                            NEXT;
X                        } else {
X                            (*oconv) (0, ESC);
X                            (*oconv) (0, '(');
X                            /* maintain various input_mode here */
X                            SEND;
X                        }
X                    }
X                } else {
X                    /* lonely ESC  */
X                    (*oconv) (0, ESC);
X                    SEND;
X                }
X            } else if(c1 == NL && broken_f&4) {
X                input_mode = ASCII; 
X                SEND;
X            } else
X                SEND;
X        }
X        /* send: */
X        if(input_mode == X0208) 
X            (*oconv) (c2, c1);  /* this is JIS, not SJIS/EUC case */
X        else
X            (*iconv) (c2, c1);  /* can be EUC/SJIS */
X        c2 = 0;
X        continue;
X        /* goto next_word */
X    }
X
X    /* epilogue */
X    (*iconv) (EOF, 0);
X    return 1;
}
X
X
X
X
int
h_conv (f, c2, c1)
X    register FILE  *f;
X    register int    c1,
X                    c2;
{
X    register int    wc;
X
X
X    /** it must NOT be in the kanji shifte sequence      */
X    /** it must NOT be written in JIS7                   */
X    /** and it must be after 2 byte 8bit code            */
X
X    hold_count = 0;
X    push_hold_buf (c2, c1);
X    c2 = 0;
X
X    while ((c1 = GETC (f)) != EOF) {
X        if(c2) {
X            /* second byte */
X            if(!estab_f) {
X                /* not established */
X                if(c1 > SSP) {
X                    /* it is still ambiguious yet */
X                    SEND;
X                } else if(c1 < AT) {
X                    /* ignore bogus first byte */
X                    c2 = 0;
X                    SEND;
X                } else {
X                    /* now established */
X                    /* it seems to be MS Kanji */
X                    estab_f = TRUE;
X                    iconv = s_iconv;
X                    SEND;
X                }
X            } else
X                SEND;
X        } else {
X            /* First byte */
X            if(c1 > DEL) {
X                /* 8th bit is on */
X                if(c1 < SSP) {
X                    /* it seems to be MS Kanji */
X                    estab_f = TRUE;
X                    iconv = s_iconv;
X                } else if(c1 < 0xe0) {
X                    /* it seems to be EUC */
X                    estab_f = TRUE;
X                    iconv = oconv;
X                } else {
X                    /* still ambiguious */
X                }
X                c2 = c1;
X                NEXT;
X            } else
X            /* 7 bit code , then send without any process */
X                SEND;
X        }
X        /* send: */
X        if((push_hold_buf (c2, c1) == EOF) || estab_f)
X            break;
X        c2 = 0;
X        continue;
X    }
X
X    /** now,
X     ** 1) EOF is detected, or
X     ** 2) Code is established, or
X     ** 3) Buffer is FULL (but last word is pushed)
X     **
X     ** in 1) and 3) cases, we continue to use
X     ** Kanji codes by oconv and leave estab_f unchanged.
X     **/
X
X    for (wc = 0; wc < hold_count; wc += 2) {
X        c2 = hold_buf[wc];
X        c1 = hold_buf[wc+1];
X        (*iconv) (c2, c1);
X    }
X    return;
}
X
X
X
int
push_hold_buf (c2, c1)
X    int             c2,
X                    c1;
{
X    if(hold_count >= HOLD_SIZE*2)
X        return (EOF);
X    hold_buf[hold_count++] = c2;
X    hold_buf[hold_count++] = c1;
X    return ((hold_count >= HOLD_SIZE*2) ? EOF : hold_count);
}
X
X
int
s_iconv (c2, c1)
X    register int    c2,
X                    c1;
{
X    if((c2 == EOF) || (c2 == 0)) {
X        /* NOP */
X    } else {
X        c2 = c2 + c2 - ((c2 <= 0x9f) ? SJ0162 : SJ6394);
X        if(c1 < 0x9f)
X            c1 = c1 - ((c1 > DEL) ? SP : 0x1f);
X        else {
X            c1 = c1 - 0x7e;
X            c2++;
X        }
X    }
X    (*oconv) (c2, c1);
X    return 1;
}
X
X
e_oconv (c2, c1)
X    register int    c2,
X                    c1;
{
X    c2 = pre_convert(c1,c2); c1 = c1_return;
X    if(fold_f) {
X        switch(fold(c2,c1)) {
X            case '\n': 
X                if(add_cr == TRUE) {
X                    putchar('\r');
X                    c1 = '\n';
X                }
X                putchar('\n');
X                break;
X            case 0:    return;
X            case '\r': 
X                c1 = '\n'; c2 = 0;
X                break;
X            case '\t': 
X            case ' ': 
X                c1 = ' '; c2 = 0;
X                break;
X        }
X    }
X    if(c2==DOUBLE_SPACE) {
X        putchar(' '); putchar(' ');
X        return;
X    }
X    if(c2 == EOF)
X        return;
X    else if(c2 == 0 && (c1&0x80)) {
X        putchar(SSO); putchar(c1);
X    } else if(c2 == 0) {
X        if(c1 == '\n' && add_cr == TRUE) 
X            putchar('\r');
X        if(c1 != '\r') 
X            putchar(c1);
X        else if(del_cr == FALSE) 
X            putchar(c1);
X    } else {
X        if((c1<0x20 || 0x7e<c1) ||
X           (c2<0x20 || 0x7e<c2)) {
X            estab_f = FALSE;
X            return; /* too late to rescue this char */
X        }
X        putchar(c2 | 0x080);
X        putchar(c1 | 0x080);
X    }
X    return;
}
X
X
X
X
s_oconv (c2, c1)
X    register int    c2,
X                    c1;
{
X    c2 = pre_convert(c1,c2); c1 = c1_return;
X    if(fold_f) {
X        switch(fold(c2,c1)) {
X            case '\n': 
X                if(add_cr == TRUE) {
X                   putchar('\r');
X                   c1 = '\n';
X                }
X                putchar('\n');
X                break;
X            case '\r': 
X                c1 = '\n'; c2 = 0;
X                break;
X            case 0:    return;
X            case '\t': 
X            case ' ': 
X                c1 = ' '; c2 = 0;
X                break;
X        }
X    }
X    if(c2==DOUBLE_SPACE) {
X        putchar(' '); putchar(' ');
X        return;
X    }
X    if(c2 == EOF)
X        return;
X    else if(c2 == 0) {
X        if(c1 == '\n' && add_cr == TRUE) 
X            putchar('\r');
X        if(c1 != '\r') 
X            putchar(c1);
X        else if(del_cr == FALSE) 
X            putchar(c1);
X    } else {
X        if((c1<0x20 || 0x7e<c1) ||
X           (c2<0x20 || 0x7e<c2)) {
X            estab_f = FALSE;
X            return; /* too late to rescue this char */
X        }
X        putchar((((c2 - 1) >> 1) + ((c2 <= 0x5e) ? 0x71 : 0xb1)));
X        putchar((c1 + ((c2 & 1) ? ((c1 < 0x60) ? 0x1f : 0x20) : 0x7e)));
X    }
X    return;
}
X
j_oconv (c2, c1)
X    register int    c2,
X                    c1;
{
X    c2 = pre_convert(c1,c2); c1 = c1_return;
X    if(fold_f) {
X        switch(fold(c2,c1)) {
X            case '\n': 
X                if(output_mode) {
X                    putchar(ESC);
X                    putchar('(');
X                    putchar(ascii_intro);
X                }
X                if(add_cr == TRUE) {
X                    putchar('\r');
X                    c1 = '\n';
X                }
X                putchar('\n');
X                output_mode = ASCII;
X                break;
X            case '\r': 
X                c1 = '\n'; c2 = 0;
X                break;
X            case '\t': 
X            case ' ': 
X                c1 = ' '; c2 = 0;
X                break;
X            case 0:    return;
X        }
X     }
X    if(c2 == EOF) {
X        if(output_mode) {
X            putchar(ESC);
X            putchar('(');
X            putchar(ascii_intro);
X        }
X    } else if(c2 == 0 && (c1 & 0x80)) {
X        if(input_mode==X0201 || !iso8859_f) {
X            if(output_mode!=X0201) {
X                putchar(ESC);
X                putchar('(');
X                putchar('I');
X                output_mode = X0201;
X            }
X            c1 &= 0x7f;
X        } else {
X            /* iso8859 introduction, or 8th bit on */
X            /* Can we convert in 7bit form using ESC-'-'-A ? 
X               Is this popular? */
X        }
X        putchar(c1);
X    } else if(c2 == 0) {
X        if(output_mode) {
X            putchar(ESC);
X            putchar('(');
X            putchar(ascii_intro);
X            output_mode = ASCII;
X        }
X        if(c1 == '\n' && add_cr == TRUE) 
X            putchar('\r');
X        if(c1 != '\r') 
X            putchar(c1);
X        else if(del_cr == FALSE) 
X            putchar(c1);
X    } else if(c2 == DOUBLE_SPACE) {
X        if(output_mode) {
X            putchar(ESC);
X            putchar('(');
X            putchar(ascii_intro);
X            output_mode = ASCII;
X        }
X        putchar(' ');
X        if(c1 == '\n' && add_cr == TRUE) 
X            putchar('\r');
X        if(c1 != '\r') 
X            putchar(c1);
X        else if(del_cr == FALSE) 
X            putchar(c1);
X    } else {
X        if(output_mode != X0208) {
X            putchar(ESC);
X            putchar('$');
X            putchar(kanji_intro);
X            output_mode = X0208;
X        }
X        if(c1<0x20 || 0x7e<c1) 
X            return;
X        if(c2<0x20 || 0x7e<c2) 
X            return;
X        putchar(c2);
X        if(c1 == '\n' && add_cr == TRUE) 
X            putchar('\r');
X        if(c1 != '\r') 
X            putchar(c1);
X        else if(del_cr == FALSE) 
X            putchar(c1);
X    }
X    return;
}
X
X
X
#define rot13(c)  ( \
X      ( c < 'A' ) ? c: \
X      (c <= 'M')  ? (c + 13): \
X      (c <= 'Z')  ? (c - 13): \
X      (c < 'a')   ? (c): \
X      (c <= 'm')  ? (c + 13): \
X      (c <= 'z')  ? (c - 13): \
X      (c) \
)
X
#define  rot47(c) ( \
X      ( c < '!' ) ? c: \
X      ( c <= 'O' ) ? (c + 47) : \
X      ( c <= '~' ) ?  (c - 47) : \
X      c \
)
X
X
/* 
X  Return value of fold()
X
X       \n  add newline  and output char
X       \r  add newline  and output nothing
X       ' ' space
X       0   skip  
X       1   (or else) normal output 
X
X  fold state in prev (previous character)
X
X      >0x80 Japanese (X0208/X0201)
X      <0x80 ASCII
X      \n    new line 
X      ' '   space
X
X  This fold algorthm does not preserve heading space in a line.
X  This is the main difference from fmt.
*/
X
int
fold(c2,c1) 
register int c2,c1;
{ 
X    int prev0;
X    if(c1=='\r') 
X        return 0;               /* ignore cr */
X    if(c1== 8) {
X        if(line>0) line--;
X        return 1;
X    }
X    if(c2==EOF && line != 0)    /* close open last line */
X        return '\n';
X    /* new line */
X    if(c1=='\n') {
X        if(prev == c1) {        /* duplicate newline */
X            if(line) {
X                line = 0;
X                return '\n';    /* output two newline */
X            } else {
X                line = 0;
X                return 1;
X            }
X        } else  {
X            if(prev&0x80) {     /* Japanese? */
X                prev = c1;
X                return 0;       /* ignore given single newline */
X            } else if(prev==' ') {
X                return 0;
X            } else {
X                prev = c1;
X                if(++line<=fold_len) 
X                    return ' ';
X                else {
X                    line = 0;
X                    return '\r';        /* fold and output nothing */
X                }
X            }
X        }
X    }
X    if(c1=='\f') {
X        prev = '\n';
X        if(line==0)
X            return 1;
X        line = 0;
X        return '\n';            /* output newline and clear */
X    }
X    /* X0208 kankaku or ascii space */
X    if( (c2==0&&c1==' ')||
X        (c2==0&&c1=='\t')||
X        (c2==DOUBLE_SPACE)||
X        (c2=='!'&& c1=='!')) {
X        if(prev == ' ') {
X            return 0;           /* remove duplicate spaces */
X        } 
X        prev = ' ';    
X        if(++line<=fold_len) 
X            return ' ';         /* output ASCII space only */
X        else {
X            prev = ' '; line = 0;
X            return '\r';        /* fold and output nothing */
X        }
X    } 
X    prev0 = prev; /* we still need this one... , but almost done */
X    prev = c1;
X    if(c2 || (SSP<=c1 && c1<=0xdf)) 
X        prev |= 0x80;  /* this is Japanese */
X    line += (c2==0)?1:2;
X    if(line<=fold_len) {   /* normal case */
X        return 1;
X    }
X    if(line>=fold_len+FOLD_MARGIN) { /* too many kinsou suspension */
X        line = (c2==0)?1:2;
X        return '\n';       /* We can't wait, do fold now */
X    }
X    /* simple kinsoku rules  return 1 means no folding  */
X    if(c2==0) {
X        if(c1==0xde) return 1; /* $@!+(J*/
X        if(c1==0xdf) return 1; /* $@!,(J*/
X        if(c1==0xa4) return 1; /* $@!#(J*/
X        if(c1==0xa3) return 1; /* $@!$(J*/
X        if(c1==0xa1) return 1; /* $@!W(J*/
X        if(c1==0xb0) return 1; /* - */
X        if(SSP<=c1 && c1<=0xdf) {               /* X0201 */
X            line = 1;
X            return '\n';/* add one new line before this character */
X        }
X        /* fold point in ASCII { [ ( */
X        if(( c1!=')'&&
X             c1!=']'&&
X             c1!='}'&&
X             c1!='.'&&
X             c1!=','&&
X             c1!='!'&&
X             c1!='?'&&
X             c1!='/'&&
X             c1!=':'&&
X             c1!=';')&&
X            ((prev0=='\n')|| (prev0==' ')||     /* ignored new line */
X            (prev0&0x80))                       /* X0208 - ASCII */
X            ) {
X            line = 1;
X            return '\n';/* add one new line before this character */
X        }
X        return 1;  /* default no fold in ASCII */
X    } else {
X        if(c2=='!') {
X            if(c1=='"')  return 1; /* $@!"(J */
X            if(c1=='#')  return 1; /* $@!#(J */
X            if(c1=='$')  return 1; /* $@!$(J */
X            if(c1=='%')  return 1; /* $@!%(J */
X            if(c1=='\'') return 1; /* $@!\(J */
X            if(c1=='(')  return 1; /* $@!((J */
X            if(c1==')')  return 1; /* $@!)(J */
X            if(c1=='*')  return 1; /* $@!*(J */
X            if(c1=='+')  return 1; /* $@!+(J */
X            if(c1==',')  return 1; /* $@!,(J */
X        }
X        line = 2;
X        return '\n'; /* add one new line before this character */
X    }
}
X
int
pre_convert(c1,c2)
register int c1,c2;
{
X        if(c2) c1 &= 0x7f;
X        c1_return = c1;
X        if(c2==EOF) return c2;
X        c2 &= 0x7f;
X        if(rot_f) {
X            if(c2) {
X                c1 = rot47(c1);
X                c2 = rot47(c2);
X            } else {
X                if(!(c1 & 0x80)) 
X                    c1 = rot13(c1);
X            }
X            c1_return = c1;
X        }
X        /* JISX0208 Alphabet */
X        if(alpha_f && c2 == 0x23 ) return 0; 
X        /* JISX0208 Kigou */
X        if(alpha_f && c2 == 0x21 ) { 
X           if(0x21==c1) {
X               if(alpha_f&0x2) {
X                   c1_return = ' ';
X                   return 0;
X               } else if(alpha_f&0x4) {
X                   c1_return = ' ';
X                   return DOUBLE_SPACE;
X               } else {
X                   return c2;
X               }
X           } else if(0x20<c1 && c1<0x7f && fv[c1-0x20]) {
X               c1_return = fv[c1-0x20];
X               return 0;
X           } 
X        }
X        return c2;
}
X
X
/* X0201 / X0208 conversion tables */
X
/* X0201 kana conversion table */
/* 90-9F A0-DF */
unsigned char cv[]= {
0x21,0x21,0x21,0x23,0x21,0x56,0x21,0x57,
0x21,0x22,0x21,0x26,0x25,0x72,0x25,0x21,
0x25,0x23,0x25,0x25,0x25,0x27,0x25,0x29,
0x25,0x63,0x25,0x65,0x25,0x67,0x25,0x43,
0x21,0x3c,0x25,0x22,0x25,0x24,0x25,0x26,
0x25,0x28,0x25,0x2a,0x25,0x2b,0x25,0x2d,
0x25,0x2f,0x25,0x31,0x25,0x33,0x25,0x35,
0x25,0x37,0x25,0x39,0x25,0x3b,0x25,0x3d,
0x25,0x3f,0x25,0x41,0x25,0x44,0x25,0x46,
0x25,0x48,0x25,0x4a,0x25,0x4b,0x25,0x4c,
0x25,0x4d,0x25,0x4e,0x25,0x4f,0x25,0x52,
0x25,0x55,0x25,0x58,0x25,0x5b,0x25,0x5e,
0x25,0x5f,0x25,0x60,0x25,0x61,0x25,0x62,
0x25,0x64,0x25,0x66,0x25,0x68,0x25,0x69,
0x25,0x6a,0x25,0x6b,0x25,0x6c,0x25,0x6d,
0x25,0x6f,0x25,0x73,0x21,0x2b,0x21,0x2c,
0x00,0x00};
X
X
/* X0201 kana conversion table for daguten */
/* 90-9F A0-DF */
unsigned char dv[]= { 
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x25,0x2c,0x25,0x2e,
0x25,0x30,0x25,0x32,0x25,0x34,0x25,0x36,
0x25,0x38,0x25,0x3a,0x25,0x3c,0x25,0x3e,
0x25,0x40,0x25,0x42,0x25,0x45,0x25,0x47,
0x25,0x49,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x25,0x50,0x25,0x53,
0x25,0x56,0x25,0x59,0x25,0x5c,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00};
X
/* X0201 kana conversion table for han-daguten */
/* 90-9F A0-DF */
unsigned char ev[]= { 
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x25,0x51,0x25,0x54,
0x25,0x57,0x25,0x5a,0x25,0x5d,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00};
X
X
/* X0208 kigou conversion table */
/* 0x8140 - 0x819e */
unsigned char fv[] = {
X
0x00,0x00,0x00,0x00,0x2c,0x2e,0x00,0x3a,
0x3b,0x3f,0x21,0x00,0x00,0x27,0x60,0x00,
0x5e,0x00,0x5f,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x2d,0x00,0x2f,
0x5c,0x00,0x00,0x7c,0x00,0x00,0x60,0x27,
0x22,0x22,0x28,0x29,0x00,0x00,0x5b,0x5d,
0x7b,0x7d,0x3c,0x3e,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x2b,0x2d,0x00,0x00,
0x00,0x3d,0x00,0x3c,0x3e,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x24,0x00,0x00,0x25,0x23,0x26,0x2a,0x40,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
} ;
X
X
/* This converts  =?ISO-2022-JP?B?HOGE HOGE?= */
X
unsigned char *mime_pattern[] = {
X   (unsigned char *)"\075?ISO-8859-1?Q?",
X   (unsigned char *)"\075?ISO-2022-JP?B?",
X   (unsigned char *)"\075?ISO-2022-JP?Q?",
X   NULL
};
X
int      mime_encode[] = {
X    'Q', 'B', 'Q',
X    0
};
X
int iso8859_f_save;
X
#define nkf_toupper(c)  (('a'<=c && c<='z')?(c-('a'-'A')):c)
/* I don't trust portablity of toupper */
X
int
mime_begin(f)
FILE *f;
{
X    int c1;
X    int i,j,k;
X    unsigned char *p,*q;
X    int r[20];    /* recovery buffer, max mime pattern lenght */
X
X    mime_mode = FALSE;
X    /* =? has been checked */
X    j = 0;
X    p = mime_pattern[j];
X    r[0]='='; r[1]='?';
X
X    for(i=2;p[i]>' ';i++) {                   /* start at =? */
X        if( ((r[i] = c1 = getc(f))==EOF) || nkf_toupper(c1) != p[i] ) {
X            /* pattern fails, try next one */
X            q = p;
X            while (p = mime_pattern[++j]) {
X                for(k=2;k<i;k++)              /* assume length(p) > i */
X                    if(p[k]!=q[k]) break;
X                if(k==i && nkf_toupper(c1)==p[k]) break;
X            }
X            if(p) continue;  /* found next one, continue */
X            /* all fails, output from recovery buffer */
X            ungetc(c1,f);
X            for(j=0;j<i;j++) {
X                (*oconv)(0,r[j]);
X            }
X            return c1;
X        }
X    }
X    iso8859_f_save = iso8859_f;
X    if(j==0) {
X        iso8859_f = TRUE;
X    }
X    mime_mode = mime_encode[j];
X    if(mime_mode=='B') {
X        mimebuf_f = unbuf_f;
X        if(!unbuf_f) {
X            /* do MIME integrity check */
X            return mime_integrity(f,mime_pattern[j]);
X        } 
X    }
X    mimebuf_f = TRUE;
X    return c1;
}
X
#define mime_getc0(f)   (mimebuf_f?getc(f):Fifo(mime_input++))
#define mime_ungetc0(c,f) (mimebuf_f?ungetc(c,f):mime_input--)
X
int 
mime_getc(f)
FILE *f;
{
X    int c1, c2, c3, c4, cc;
X    int t1, t2, t3, t4, mode, exit_mode;
X
X    if(mime_top != mime_last) {  /* Something is in FIFO */
X        return  Fifo(mime_top++);
X    }
X
X    if(mimebuf_f == FIXED_MIME)
X        exit_mode = mime_mode;
X    else
X        exit_mode = FALSE;
X    if(mime_mode == 'Q') {
X        if((c1 = mime_getc0(f)) == EOF) return (EOF);
X        if(c1=='_') return ' ';
X        if(c1!='=' && c1!='?') 
X            return c1;
X        mime_mode = exit_mode; /* prepare for quit */
X        if(c1<=' ') return c1;
X        if((c2 = mime_getc0(f)) == EOF) return (EOF);
X        if(c2<=' ') return c2;
X        if(c1=='?'&&c2=='=') {
X            /* end Q encoding */
X            input_mode = exit_mode;
X            iso8859_f = iso8859_f_save;
X            return getc(f);
X        }
X        if(c1=='?') {
X            mime_mode = 'Q'; /* still in MIME */
X            mime_ungetc0(c2,f);
X            return c1;
X        }
X        if((c3 = mime_getc0(f)) == EOF) return (EOF);
X        if(c2<=' ') return c2;
X        mime_mode = 'Q'; /* still in MIME */
#define hex(c)   (('0'<=c&&c<='9')?(c-'0'):\
X     ('A'<=c&&c<='F')?(c-'A'+10):('a'<=c&&c<='f')?(c-'a'+10):0)
X        return ((hex(c2)<<4) + hex(c3));
X    }
X
X    if(mime_mode != 'B') {
X        mime_mode = FALSE;
X        return getc(f);
X    }
X
X
X    /* Base64 encoding */
X    /* 
X        MIME allows line break in the middle of 
X        Base64, but we are very pessimistic in decoding
X        in unbuf mode because MIME encoded code may broken by 
X        less or editor's control sequence (such as ESC-[-K in unbuffered
X        mode. ignore incomplete MIME.
X    */
X    mode = mime_mode;
X    mime_mode = exit_mode;  /* prepare for quit */
X
X    while ((c1 = mime_getc0(f))<=' ') {
X        if(c1==EOF)
X            return (EOF);
X    }
X    if((c2 = mime_getc0(f))<=' ') {
X        if(c2==EOF)
X            return (EOF);
X        if(mimebuf_f!=FIXED_MIME) input_mode = ASCII;  
X        return c2;
X    }
X    if((c1 == '?') && (c2 == '=')) {
X        input_mode = ASCII;
X        while((c1 =  getc(f))==' ' /* || c1=='\n' || c1=='\r' */);
X        return c1;
X    }
X    if((c3 = mime_getc0(f))<=' ') {
X        if(c3==EOF)
X            return (EOF);
X        if(mimebuf_f!=FIXED_MIME) input_mode = ASCII;  
X        return c3;
X    }
X    if((c4 = mime_getc0(f))<=' ') {
X        if(c4==EOF)
X            return (EOF);
X        if(mimebuf_f!=FIXED_MIME) input_mode = ASCII;  
X        return c4;
X    }
X
X    mime_mode = mode; /* still in MIME sigh... */
X
X    /* BASE 64 decoding */
X
X    t1 = 0x3f & base64decode(c1);
X    t2 = 0x3f & base64decode(c2);
X    t3 = 0x3f & base64decode(c3);
X    t4 = 0x3f & base64decode(c4);
X    cc = ((t1 << 2) & 0x0fc) | ((t2 >> 4) & 0x03);
X    if(c2 != '=') {
X        Fifo(mime_last++) = cc;
X        cc = ((t2 << 4) & 0x0f0) | ((t3 >> 2) & 0x0f);
X        if(c3 != '=') {
X            Fifo(mime_last++) = cc;
X            cc = ((t3 << 6) & 0x0c0) | (t4 & 0x3f);
X            if(c4 != '=') 
X                Fifo(mime_last++) = cc;
X        }
X    } else {
X        return c1;
X    }
X    return  Fifo(mime_top++);
}
X
int
mime_ungetc(c) 
unsigned int   c;
{
X    Fifo(mime_last++) = c;
X    return c;
}
X
X
int
mime_integrity(f,p)
FILE *f;
unsigned char *p;
{
X    int c,d;
X    unsigned int q;
X    /* In buffered mode, read until =? or NL or buffer full
X     */
X    mime_input = mime_top;
X    mime_last = mime_top;
X    while(*p) Fifo(mime_input++) = *p++;
X    d = 0;
X    q = mime_input;
X    while((c=getc(f))!=EOF) {
X        if(((mime_input-mime_top)&MIME_BUF_MASK)==0) break;
X        if(c=='=' && d=='?') {
X            /* checked. skip header, start decode */
X            Fifo(mime_input++) = c;
X            mime_input = q; 
X            return 1;
X        }
X        if(!( (c=='+'||c=='/'|| c=='=' || c=='?' ||
X            ('a'<=c && c<='z')||('A'<= c && c<='Z')||('0'<=c && c<='9'))))
X            break;
X        /* Should we check length mod 4? */
X        Fifo(mime_input++) = c;
X        d=c;
X    }
X    /* In case of Incomplete MIME, no MIME decode  */
X    Fifo(mime_input++) = c;
X    mime_last = mime_input;     /* point undecoded buffer */
X    mime_mode = 1;              /* no decode on Fifo last in mime_getc */
X    return 1;
}
X
int
base64decode(c)
X    int            c;
{
X    int             i;
X    if(c > '@')
X        if(c < '[')
X            i = c - 'A';                        /* A..Z 0-25 */
X        else
X            i = c - 'G'     /* - 'a' + 26 */ ;  /* a..z 26-51 */
X    else if(c > '/')
X        i = c - '0' + '4'   /* - '0' + 52 */ ;  /* 0..9 52-61 */
X    else if(c == '+')
X        i = '>'             /* 62 */ ;          /* +  62 */
X    else
X        i = '?'             /* 63 */ ;          /* / 63 */
X    return (i);
}
X
int 
usage()   
{
X    fprintf(stderr,"USAGE:  nkf(nkf32,wnkf,nkf2) -[flags] [in file] .. [out file for -O flag]\n");
X    fprintf(stderr,"Flags:\n");
X    fprintf(stderr,"b,u      Output is bufferred (DEFAULT),Output is unbufferred\n");
#ifdef DEFAULT_CODE_SJIS
X    fprintf(stderr,"j,s,e    Outout code is JIS 7 bit, Shift JIS (DEFAULT), AT&T JIS (EUC)\n");
#endif
#ifdef DEFAULT_CODE_JIS
X    fprintf(stderr,"j,s,e    Outout code is JIS 7 bit (DEFAULT), Shift JIS, AT&T JIS (EUC)\n");
#endif
#ifdef DEFAULT_CODE_EUC
X    fprintf(stderr,"j,s,e    Outout code is JIS 7 bit, Shift JIS, AT&T JIS (EUC) (DEFAULT)\n");
#endif
X    fprintf(stderr,"J,S,E    Input assumption is JIS 7 bit , Shift JIS, AT&T JIS (EUC)\n");
X    fprintf(stderr,"t        no conversion\n");
X    fprintf(stderr,"i_       Output sequence to designate JIS-kanji (DEFAULT B)\n");
X    fprintf(stderr,"o_       Output sequence to designate ASCII (DEFAULT B)\n");
X    fprintf(stderr,"r        {de/en}crypt ROT13/47\n");
X    fprintf(stderr,"v        Show this usage\n");
X    fprintf(stderr,"m[BQ]    MIME decode [B:base64 stream,Q:quoted stream]\n");
X    fprintf(stderr,"l        ISO8859-1 (Latin-1) support\n");
X    fprintf(stderr,"f        Folding: -f60 or -f\n");
X    fprintf(stderr,"Z[0-2]   Convert X0208 alphabet to ASCII  1: Kankaku to space,2: 2 spaces\n");
X    fprintf(stderr,"X,x      Assume X0201 kana in MS-Kanji, -x preserves X0201\n");
X    fprintf(stderr,"B[0-2]   Broken input  0: missing ESC,1: any X on ESC-[($]-X,2: ASCII on NL\n");
#ifdef MSDOS
X    fprintf(stderr,"T        Text mode output\n");
#endif
X    fprintf(stderr,"O        Output to File (DEFAULT 'nkf.out')\n");
X    fprintf(stderr,"d,c      Delete \\r in line feed, Add \\r in line feed\n");
X    fprintf(stderr,"Network Kanji Filter Version %s (%s) "
#if defined(MSDOS) && !defined(_Windows)
X                  "for DOS"
#endif
#if !defined(__WIN32__) && defined(_Windows)
X                  "for Win16"
#endif
#if defined(__WIN32__) && defined(_Windows)
X                  "for Win32"
#endif
#ifdef __OS2__
X                  "for OS/2"
#endif
X                  ,Version,Patchlevel);
X    fprintf(stderr,"\n%s\n",CopyRight);
X    return 0;
}
X
/**
X ** $@%Q%C%A@):n<T(J
X **  void@merope.pleiades.or.jp (Kusakabe Youichi)
X **  NIDE Naoyuki <nide@ics.nara-wu.ac.jp>
X **  ohta@src.ricoh.co.jp (Junn Ohta)
X **  inouet@strl.nhk.or.jp (Tomoyuki Inoue)
X **  kiri@pulser.win.or.jp (Tetsuaki Kiriyama)
X **  Kimihiko Sato <sato@sail.t.u-tokyo.ac.jp>
X **  a_kuroe@kuroe.aoba.yokohama.jp (Akihiko Kuroe)
X **  kono@ie.u-ryukyu.ac.jp (Shinji Kono)
X **  GHG00637@nifty-serve.or.jp (COW)
X **
X ** $@:G=*99?7F|(J
X **  1996.9.26
X **/
X
/* end */
SHAR_EOF
  $shar_touch -am 1006155696 'nkf.c' &&
  chmod 0644 'nkf.c' ||
  echo 'restore of nkf.c failed'
  shar_count="`wc -c < 'nkf.c'`"
  test 55300 -eq "$shar_count" ||
    echo "nkf.c: original size 55300, current size $shar_count"
fi
# ============= nkf.doc ==============
if test -f 'nkf.doc' && test X"$1" != X"-c"; then
  echo 'x - skipping nkf.doc (file already exists)'
else
  echo 'x - extracting nkf.doc (text)'
  sed 's/^X//' << 'SHAR_EOF' > 'nkf.doc' &&
NAME
X        nkf - $@%M%C%H%o!<%/MQ4A;z%3!<%IJQ49%U%#%k%?(J v1.62
X
SYNOPSIS
X	nkf [options] [in_file]                   ...Unix$@HG(J
X	nkf [options] [in_file] [out_file for -O] ...DOS$@HG(J
X	wnkf [options] [in_file] [outfile for -O] ...Windows16bit(3.x)$@HG(J
X	nkf32 [options] [in_file] [outfile for -O]...Windows32bit(95/NT)$@HG(J
X	nkf2 [options] [in_file] [outfile for -O] ...OS/2$@HG(J
X
X	$@!JL>>N$O!"F1$8(JPath$@>e$K$"$C$F$b6hJL$G$-$k$h$&$KJQ99$7$F$$$k!#!K(J
X
DESCRIPTION
X
nkf$@$O%M%C%H%o!<%/$G%a!<%k$d%K%e!<%9$NFI$_=q$-$r$9$k$?$a$K:n$i$l$?!"4A(J
X$@;z%3!<%I$NJQ49%U%#%k%?$G$"$k!#(J
X
X$@$3$N(Jnkf$@$NFCD'$H$7$F$O!"F~NO4A;z%3!<%I7O$NE}7WE*$J<+F0G'<15!G=$,$"$k!#(J
X$@$3$N$?$a!"MxMQ<T$O!"F~NO4A;z%3!<%I7O$,2?$G$"$k$+$rCN$i$J$/$F$b!"=PNO4A;z(J
X$@%3!<%I7O$N$_;XDj$9$l$PNI$$$3$H$K$J$k!#$?$@!"$3$NH=Dj5!9=$O!"M}O@E*$K$O40(J
X$@A4$G$O$J$$$,!"DL>o$N%K%e!<%9$d%a!<%k$N%a%C%;!<%8$K$D$$$F$O3N<B$KF0:n$9$k(J
X$@0BA4$J$b$N$K$O$J$C$F$$$k!#(J
X
X$@8=:_!"(Jnkf$@$,G'<1$G$-$kF~NO$N4A;z%3!<%I7O$O!"$$$o$f$k!V(JJIS$@%3!<%I!W(J(ISO-
2022-JP$@$K4p$E$/$b$N(J)$@!"(JMS$@4A;z%3!<%I(J($@%7%U%H(JJIS)$@!"F|K\8l(JEUC(AT&T$@%3!<%I(J)$@$N$$(J
X$@$:$l$+$G$"$k!#=PNO$9$k4A;z%3!<%I7O$b!"$3$N(J3$@<oN`$G$"$k!#(J
X
X$@F~NO$O!"%U%!%$%k$r;XDj$7$J$1$l$P!"I8=`F~NO$H$J$k!#=PNO$OI8=`=PNO$G$"$k!#(J
X
X$@;XDj$G$-$k%*%W%7%g%s$O!"0J2<$NDL$j!#(J-mu $@$N$h$&$KB3$1$k$3$H$,$G$-$k!#(J
X
X        -b      $@%P%C%U%!%j%s%0=PNO$r9T$&!#(J($@%G%U%)%k%H(J)
X        -u      $@=PNO;~$K!"%P%C%U%!%j%s%0$7$J$$!#(J
X                rsh localhost | nkf -u $@$H$$$&$h$&$K;H$&!#(J
X
X        -t      $@2?$b$7$J$$!#(J
X
X        -j      JIS$@%3!<%I$r=PNO$9$k!#(J($@%G%U%)%k%H(J)
X
X        -e      EUC$@%3!<%I$r=PNO$9$k!#(J
X
X        -s      $@%7%U%H(JJIS$@%3!<%I$r=PNO$9$k!#(J
X
X        -i?     JIS$@4A;z$r;X<($9$k%7!<%1%s%9$H$7$F(J ESC-'$'-?$@$r;HMQ$9$k!#(J
X                ($@%G%U%)%k%H$O!"(JESC-'$'-'B')
X
X        -o?     1$@%P%$%H1Q?tJ8;z%;%C%H$r;X<($9$k%7!<%1%s%9$H$7$F!"(JESC-
X                '('-?$@$r;HMQ$9$k!#(J($@%G%U%)%k%H$O!"(JESC-'('-'B')
X
X        -r      ROT13/47$@$NJQ49$r$9$k!#(J
X
X        -v      $@%P!<%8%g%s$rI=<($9$k!#(J
X
X        -T      $@%F%-%9%H%b!<%I$G=PNO$9$k!#(J(MS-DOS$@>e$G$N$_8zNO$r;}$D(J)
X
X        -m      MIME $@$r2rFI$9$k!#(JISO-2022-JP(base64)$@$H(JISO-8859-1(Q encode)
X                $@$N$_$r2rFI$9$k!#(JISO-8859-1 (Latin-1) $@$r2rFI$9$k;~$O!"(J
X                -l$@%U%i%0$bI,MW$G$"$k!#(J
X                -mB   MIME base64 stream $@$r2rFI$9$k!#%X%C%@$J$I$O<h$j=|$/$3$H!#(J
X                -mQ   MIME quoted stream $@$r2rFI$9$k!#(J
X
X        -l      0x80-0xfe$@$N%3!<%I$r(JISO-8859-1 (Latin-1)$@$H$7$F07$&!#(J
X                JIS$@%3!<%I%"%&%H%W%C%H$H$NAH9g$;$_$N$_M-8z!#(J
X                -s, -e, -x$@$H$ON>N)$7$J$$!#(J
X
X        -f?    $@0l9T(J?$@J8;z$K$J$k$h$&$K4JC1$J@07A$r$*$3$J$&!#%G%U%)%k%H$O(J
X                60$@J8;z$G$"$k!#(J
X
X        -Z      X0208$@Cf$N1Q?t;z$H<c43$N5-9f$r(JASCII$@$KJQ49$9$k!#(J
X                -Z1 $@$O(JX0208$@4V3V$r(JASCII space$@$KJQ49$9$k!#(J
X                -Z2 $@$O(JX0208$@4V3V$r(JASCII space $@Fs$D$KJQ49$9$k!#(J
X
X
X        -J -E -S -X -B
X                $@4|BT$5$l$kF~NO%3!<%I$N@-<A$r;XDj$9$k!#(J
X                -J     ISO-2022-JP$@$r2>Dj$9$k!#(J
X                -E     $@F|K\8l(JEUC(AT&T)$@$r2>Dj$9$k!#(J
X                -S     MS$@4A;z$r2>Dj$9$k!#(JX0201$@2>L>$b2>Dj$5$l$k!#(J
X                -X     MS$@4A;zCf$K(JX0201$@2>L>$,$"$k$H2>Dj$9$k!#(J
X                -B     $@2u$l$?(J(Broken)JIS$@%3!<%I!#(JESC$@$,$J$/$J$C$?$H2>Dj$9$k!#(J
X                    -B1  ESC-(, ESC-$ $@$N$"$H$N%3!<%I$rLd$o$J$$(J
X                    -B2  $@2~9T$N$"$H$K6/@)E*$K(JASCII$@$KLa$9(J
X
X        -x      $@DL>o$*$3$J$o$l$k(JX0201$@2>L>(J->X0208$@$N2>L>JQ49$r$7$J$$$G!"(J
X                X0201$@2>L>$rJ]B8$9$k!#F~NO$O!"(JMS-Kanji$@$N(J1byte$@2>L>!"(JSO/SI$@!"(J
X                ESC-(-I, SSO$@$r<u$1IU$1$k!#=PNO$O!"F|K\8l(JEUC$@Cf$G$O(JSSO$@!"(J
X                JIS$@$G$O(J ESC-'('-I $@$r;H$&!#(J
X
X	-O	$@%U%!%$%k(J out_file $@$K=PNO$,J]B8$5$l$^$9!#%U%!%$%kL>$,;XDj$5$l(J
X		$@$F$$$J$$>l9g$O!"(J'nkf.out'$@Kt$O(J'wnkf.out'$@$K=PNO$9$k!#(J
X
X	-c	$@9TKv$K(JCR$@%3!<%I(J(0D)$@$rDI2C(J($@3HD%5!G=(J -T $@$HJ;MQIT2D(J)
X	
X	-d	$@9TKv$+$i(JCR$@%3!<%I(J(0D)$@$r:o=|(J($@3HD%5!G=(J -T $@$HJ;MQIT2D(J)
X
X
AUTHOR
X
X$@;T@n(J  $@;j(J        ichikawa@flab.fujitsu.co.jp     (was ichikawa@fujitsu.JUNET)
X
ACKNOWLEDGE
X
X    morb@fujitsu, kiss@ayumi.stars.flab.fujitsu, cen122@flab.fujitsu,
X    yuki@flab.fujitsu $@B>!"(Jfujitsu & flab.fujitsu$@$N3'$5$s$N6(NO$K46<U!#(J
X    shinoda@cs.titech, kato@cs.titech, uematsu@cs.titech  TNX
X    kono@ie.u-ryukyu.ac.jp, GHG00637@niftyserve.or.jp
X
BUGS
X
X$@<B$O!"F~NO$N%3!<%I7O$NH=Dj$O!"(JEUC$@$H%7%U%H(JJIS$@$H$N<+F0H=Dj$G$"$j!":G=i$K(J
X$@FCDj$G$-$kJ8;z$,Mh$?;~E@$G3NDj$7$F$7$^$&!#$=$7$F!"FCDjITG=$N4V$OJ]N1%P%C(J
X$@%U%!$K$?$a$F$*$+$l!"3NDj8e$K=hM}$5$l$k!#$3$N$?$a!"(J
X
X        1)7$@%S%C%H(JJIS$@$O>o$KG'<1$5$l$k!#%7%U%H(JJIS$@!"(JEUC$@:.9g$b$[$H$s$I$N(J
X          $@>l9g$OLdBj$,$J$$!#$?$@$7!"(J
X
X        2)$@%7%U%H(JJIS$@$N(JX0201$@2>L>$H(JEUC$@$,<1JL$G$-$J$$!#$7$?$,$C$F!"(J
X          $@%G%U%)%k%H$G$O%7%U%H(JJIS$@$N(JX0201$@2>L>$O$J$$$H2>Dj$7$F$$$k!#(J
X
X        3)$@$A$g$C$H!"$N$m$$!#(J($@=i4|$NHG$h$j$O2~NI$5$l$F$$$k(J)
X
JIS$@4A;z$N?75lHG$N6hJL$H$+!"(JASCII$@$H(JJIS$@%m!<%^;z$N6hJL$J$I$K$D$$$F$OJ]B8$5(J
X$@$l$J$$!#(J
X
X$@$3$N%U%#%k%?$NJQ49$O!"%3!<%I7O$KBP1~$7$?0l3g<LA|$r;\$9$@$1$J$N$G!"30;z(J
X$@$dFC<l5-9f$d7S@~AGJR$J$I!"(JJIS$@Bh0l!"BhFs?e=`I=$K$*$$$FDj5A$5$l$F$$$J$$%3!<(J
X$@%I$K3F<R$K$h$j3d$jEv$F$i$l$?J8;z$,$I$&$J$k$+$^$G$O4XCN$7$J$$!#$=$7$F!"Bh(J
X$@Fs?e=`$,$J$$$H$+$"$k$H$+$K$h$kLdBj$O!"$3$N%U%#%k%?$NHO0O30$H;W$($k!#$=$l(J
X$@$i$O!"=q$-<j$N@UG$$G$J$s$H$+$7$F$b$i$$$?$$!#(J
X
X$@$$$:$l$K$;$h!"DL>o$N%K%e!<%9$N5-;v$K$D$$$F$OLdBj$O$J$/JQ49$G$-$k$O$:$G(J
X$@$"$k!#(J($@$H;W$&$N$@$,!":#$R$H$D<+?.$O$J$$(J)
X
kono@csl.sony.co.jp (Shinji Kono) $@$K$h$kJQ99!#(J
X
nkf 1.4 $@$N>iD9$@$1$I@N$OJXMx$@$C$?%*%W%7%g%s$N$$$/$D$+$O:o=|$5$l$F$$$k!#(J
-n -B$@$J$I!#(J
X
XX0201$@2>L>$O%G%U%)%k%H$G(JX0208$@$KJQ49$5$l$k!#$?$@$7!"%7%U%H(JJIS$@$N(JX0201$@2>L>(J
X$@$O%G%U%)%k%H$G$O(JEUC$@$@$H2r<a$5$l$F$7$^$&!#$3$l$,K>$^$7$/$J$$;~$K$O(J -S $@$d(J
-X $@$J$I$N%U%i%0$r;H$($PNI$$!#(J-X$@$r;XDj$9$k$H0lC63NDj$7$?%7%U%H(JJIS$@$+$i(J 
EUC$@$K0\9T$9$k$3$H$O$J$$!#(JESC-(-I$@$K$h$k(J X0201$@$O>o$KG'<1$5$l$k!#(JSI/SO
SSO$@$O!"(J-l$@$,;XDj$5$l$F$$$J$1$l$P(JX0201$@$H2r<a$9$k!#(J
X
MIME decode$@$O!"(JISO-2022-JP$@$N(Jbase64$@$H!"(JISO-8859-1$@$N(J16$@?J(Jencode$@$N$_(J
decode$@$9$k!#(J MIME decode$@$O!"C1=c$J2~9T$d6uGr$O0BA4$KFI$_Ht$P$5$l$k!#(J
X$@$H$$$&$3$H$O!"(J MIME decode$@Cf$N6uGr$OJ]B8$5$l$J$$!#(Jless$@$d(Jrn$@$G9T$,J,3d(J
X$@$5$l$?;~$O!"(J Terminal$@$K$h$C$F0[$J$k(J ESC-[-K $@$J$I$,A^F~$5$l$k$N$G!"(J
X$@40A4$K$O(Jdecode $@$G$-$J$$!#(JISO-8859-1 $@=PNO$O(JJIS $@%3!<%I=PNO$H$7$+N>N)$7$J$$!#(J
X
Fold $@5!G=$O(Jfmt$@$H0[$J$j9TF,$N6uGr$rL5;k$9$k!#6XB'=hM}$O$"$k$,;XDj$5$l$?(J
X$@D9$5(J+5$@$G6/@)2~9T$9$k!#(J
X
XX0201$@2>L>$O(Jrot47$@$5$l$J$$!#(J
X
nkf 1.6
X
kono@ie.u-ryukyu.ac.jp (Shinji Kono) $@$K$h$kJQ99!#(J
X
MIME $@$N%A%'%C%/$r$-$S$7$/$7$F(J($@CY$/$J$C$?J,(J)$@0BA4$K$J$C$?!#(J
X$@$7$?$,$C$FJ#?t9T$K$^$?$,$k(JMIME$@$O(Jdecode$@$5$l$J$$!#(J
MIME $@$ND>8e$N6uGr$OFI$_Ht$P$9!#(JQ-Encding $@$N(J_$@$O6uGr$KJQ49$5$l$k!#(J
X -B $@$N(Jlevel$@$r(J0,1,2 $@$KA}$d$7$?!#(JMIME$@$N(Jbase64, Q-Encoding$@$r2rFI$9$k(J
X$@5!G=$rIU$1$?!#%X%C%@$J$I$O2rFI$7$J$$$N$G!"(JEncode$@$5$l$?ItJ,$@$1$r(J
X$@DL$9I,MW$,$"$k!#(J -mB $@$O!"(Jnkf1.5$@$H0c$&F0$-$r$9$k$N$G!"(J-B -m $@$H$9$k$3$H!#(J
X
nkf 1.6.1
X
X -Z $@$G!A(J -> ~$@$NJQ49$r;_$a$?!#(J
X -Z1 $@$G(JX0208$@4V3V(J->ASCII space$@$NJQ49$r$*$3$J$&!#(J
X -Z2 $@$G(JX0208$@4V3V(J->ASCII space 2$@8D$NJQ49$r$*$3$J$&!#(J
X
X kabe@dais.is.tohoku.ac.jp (Taketo Kabe) $@$K$h$kF|K\8l(Jroff $@$N%=!<%9$,(J
X $@$D$-$^$7$?!#(J
X
========
nkf 1.62
X
GHG00637@niftyserve.or.jp (COW) $@$K$h$kJQ99(J
X
X$@!!;T@n;a$N(Jnkf$@$O!"(JUNIX$@MQ$N%D!<%k$G$"$k$N$G!"=PNO$N%G%U%)%k%H$N@_Dj$,(J7bit
X$@$N(JJIS$@%3!<%I$G$"$C$?$b$N$r!"(JDOS,Windows$@HG$G$O!"(JS-JIS$@%3!<%I$r=PNO%G%U%)%k(J
X$@%H$K@_Dj$7$?!#$3$l$K$h$j!"(JUNIX$@$G:n@.$5$l$?%U%!%$%k$r!"(JDOS,Windows$@>e$G1\(J
X$@Mw$9$k$3$H$,$G$-$k!#$=$NB>$N5!G=DI2C$H$7$F%P!<%8%g%s>pJs$H;HMQJ}K!$rI=<((J
X$@$9$k$h$&$K$7!"%U%!%$%k=PNO5!G=$rDI2C$7$?!#!J:F%3%s%Q%$%k$GJQ992DG=!K(J
X
Windows16bit$@HG$N$_$N3HD%$K$D$$$F(J
X
X$@!!(JWindows16bit$@HG$K$D$$$F$O!"%j%@%$%l%/%H$d%Q%$%W5!G=$,;H$($^$;$s!#$h$C$F$3$N(J
X$@>l9g$K$O(J-O$@%*%W%7%g%s$rMxMQ$7$F%U%!%$%k=PNO$5$l$?$b$N$rMxMQ$7$F$b$i$$$?$$!#(J
X
X$@Nc!'!!(Jwnkf -e -O nkf.in nkf.out ...nkf.in$@$r(JEUC$@%3!<%I$G(Jnkf,out$@$K=PNO$9$k!#(J
X
X$@!!(JWindows16bit$@HG$G$O!"I8=`=PNO5Z$S%(%i!<=PNO$,%&%$%s%I%&2hLL$K$J$j$^$9!#I8=`(J
X$@=PNO$N>l9g$O%9%/%m!<%kF0:n$,DI2C$5$l$F$*$j!"2hLL$,N.$l$J$$$h$&$K$J$C$F$$$k!#(J
X$@$@$@$7!"(J-O$@%*%W%7%g%s$r;XDj$7$?>l9g$K$O%U%!%$%k$K=PNO$5$l$k$?$a!"2hLL$K(J
X$@$O2?$bI=<($5$l$J$$!#(J
X$@$^$?!"(JEasyWin$@$N%P!<%8%g%s%"%C%W$G!"(J400$@9T$^$G$N%/%j%C%W%\!<%IE>Aw$H0u:~$b(J
X$@2DG=$H$J$C$?!#$^$?!"%I%i%C%0!&%"%s%I!&%I%m%C%W$K$bBP1~$7$F$$$k!#(J
X
X$@!!(JUNIX$@%U%!%$%k$N(JViewer$@$H$7$F;H$&$K$O!"0J2<$N$h$&$K;HMQ$9$k!#$3$l$O3HD%;R(J
X$@$r4XO"$E$1$7$F$b;HMQ2DG=$H;W$o$l$k!#(J
X
X$@Nc!'!!(Jwnkf in.euc ...EUC$@%3!<%I$N%U%!%$%k$r(JS-JIS$@$G1\Mw(J
X$@!!!!!!(Jwnkf in.jis ...JIS$@%3!<%I$N%U%!%$%k$r(JS-JIS$@$G1\Mw(J
X
X$@$J$*!"$3$N(Jwnkf.exe$@$O(JDOS$@Ak>e$G$O5/F0$G$-$J$$$N$G!"%3%^%s%I%i%$%s$G!"(J
Windows16bit$@%=%U%H$,F0:n$G$-$k4D6-$G$"$k(JComWin,ComRun$@Ey$rMxMQ$7$F$[$7$$!#(J
(Windows95/NT$@$G$"$l$P!"%3%s%=!<%k$+$i<B9T$,2DG=$G$"$k!#(J)
X
DOS,OS/2,Windows32bit$@HG$K$D$$$F(J
X
X$@!!(JDOS,OS/2,Windows32bit$@HG$O(JUNIX$@$HF1$8$h$&$K%Q%$%W5Z$S%j%@%$%l%/%H$,2DG=(J
X$@$G$"$k!#$h$C$F!"0J2<$N$h$&$K$7$F$b%U%!%$%k=PNO2DG=$G$"$k!#(J
X
X$@Nc!'!!(Jnkf -e nkf.in > nkf.out ...nkf.in$@$r(JEUC$@%3!<%I$G(Jnkf,out$@$K=PNO$9$k!#(J
X
X$@!!(JViewer$@$H$7$F;HMQ$9$k>l9g$O0J2<$N$h$&$K$9$k!#(J
X
X$@Nc!'!!(Jnkf in.euc | more ...EUC$@%3!<%I$N%U%!%$%k$r(JS-JIS$@$G1\Mw(J
X$@!!!!!!(Jnkf in.jis | more ...JIS$@%3!<%I$N%U%!%$%k$r(JS-JIS$@$G1\Mw(J
X
X  DOS,Windows$@$H(JUNIX$@4V$N%G!<%?JQ495!G=$K$D$$$F$O!"2~9T%3!<%I$N(JCR(0D)$@$r:o=|(J
X$@$7$?$jDI2C$7$?$j$9$k5!G=$rDI2C$7$?!#(J(UNIX$@$N%"!<%+%$%V$rE83+$7$?;~$KJXMx(J)
X
X$@Nc!'(J nkf -j -d nkf.man > nkf.jis ...nkf.man$@$r(JCR$@$r:o=|$7$F(JJIS$@%3!<%I$K(J
X                                       $@JQ49$7!"(Jnkf.jis$@$K=q$-9~$`!#(J
X
X$@!!(J-O$@%*%W%7%g%s$b;H$($k$h$&$KJQ99$7$?$N$G!">e5-$NNc$O<!$N$h$&$K;HMQ2DG=(J
X$@!!$3$N%3%^%s%I%i%$%s$G%"%W%j$NCf$+$iD>@\5/F0$G$-$FJXMx$N$O$:$G$9$,!&!&(J
X
X$@Nc!'(J nkf -j -d -O nkf.man nkf.jis
X
X$@DI2C%*%W%7%g%s$NMxMQ$K$D$$$F!"(J
X
X  $@DI2C$5$l$?(J-c,-d$@%*%W%7%g%s$O!"(Jftp$@$GE>Aw$5$l$?%P%$%J%j05=L2rE`8e$N%F%-%9%H(J
X$@$r(JUNIX$@$H(JDOS Windows$@4V$G;HMQ$G$-$k$h$&$K2~9T%3!<%I$rJQ49$9$k$N$KMxMQ$G$-$k(J
X$@$H;W$&!#DL>o$O(J-T$@%*%W%7%g%s$@$1$G$b==J,$G$"$m$&!#(J
X
X$@?7(JOS/2$@HG;HMQ$K$*$1$kCm0U(J
X
X$@!!$3$N?7(JOS/2$@HG$rMxMQ$9$k$K$O!"(JGNU$@$K$h$k(Jemx 0.8h$@0J9_$N4D6-$OITMW$G$9!#(J
X$@!!0J2<$K(JIBM VisualAge C++3.0$@$G$N<B9T%U%!%$%k:n@.<j=g$r<($9!#(J
X   icc /Fe nkf2.exe nkf.c
X
X$@JQ99MzNr(J
X
X$@$3$N(Jnkf$@$O!"(J1995$@G/(J3$@7n(J1$@F|HG$+$i$N:9J,%Q%C%A(J1.5$@$r%Y!<%9$K5!G=3HD%$7$?$b$N$G$"$k!#(J
X$@$3$N$?$a!"A02s8x3+$7$?(JVersion 1.43$@$h$j(J-O$@%*%W%7%g%s$,(JWindows16bit$@$@$1$KJQ99$5(J
X$@$l!"(JWindows16bit$@HG$O!"2hLL%9%/%m!<%k$H%/%j%C%/%\!<%IE>Aw$H0u:~5!G=$,DI2C$5$l(J
X$@$?!#(J
X$@0JA0$N%P!<%8%g%s$G$O!"(JJIS$@JQ49;~$K>c32$,$"$j!"(J-O$@%*%W%7%g%s$N%9%H%j!<%`$N;HMQJ}(J
X$@K!$rJQ99$7$?!#$^$?!";d(JCOW$@$O!":G6a%$%s%?!<%M%C%H$K@\B3$7$?$,!"(JNews$@$K;22C$7$F$$(J
X$@$J$$$?$a!":G?7$G$J$$$+$b$7$l$J$$$N$O!"4*J[$7$F$$$?$@$-$?$$!#(J
X
Ver1.52$@$K$*$$$FJQ49$N%G%U%)%k%HI=<($N4V0c$$Ey$r=$@5$7$?!#?=$7Lu$J$$!#(J
Ver1.53$@$K$*$$$F(Jnkf,nkf32,nkf2$@$N(J-O$@%*%W%7%g%s$rI|3h$7$?!#(J($@J}?K$,5$$^$0$l$@(J)
($@%3%^%s%I%7%'%k$r%"%W%j$+$i<B9T$9$k$N$K(J>$@$d(J|$@$,G'<1$5$l$J$$LdBj$,$"$k$?$a(J)
X$@$^$?!"(JOS/2$@$K$*$1$k(J-c,-d$@%*%W%7%g%s;XDj;~$K%P%$%J%j%b!]%I$K$J$i$J$+$C$?(J
X$@$?$a!"2~9T%3!]%IJQ49$,$G$-$J$$%P%0$r=$@5$7$?!#(J(icc$@$N;EMM$,FC<l$G$"$C$?!#(J)
X$@$=$l$KIU?o$7$F!"$=$NB>(J-c,-d$@%*%W%7%g%s$N(JJIS,EUC$@%b!<%I$G$NIT6q9g$b=$@5$7$?!#(J
Ver1.54$@$K$*$$$F(J-m$@%*%W%7%g%s$G(JMIME$@%(%s%3!<%I$5$l$?J8;zNs$N07$$$N%X%C%@!<ItJ,$,!"(J
X  =?ISO-2022-JP?B?GyRCJCskOiRkJHMbKEI=?=
X$@$^$?$O!"(J
X  =?iso-2022-jp?B?GyRCJCskOiRkJHMbKEI=?=
X$@$N>l9g$G$b@5>o$KJQ49$G$-$k$h$&$K=$@5$7$?!#(J
Ver1.62$@$K$*$$$F(Jkono$@;a$N(JVer1.6$@$N(J-Z,-B level$@%*%W%7%g%sDI2C5!G=$KBP=h$7$?!#(J
X$@$=$l0J30$K(J-c$@%*%W%7%g%s$N%P%0=$@5$r$*$3$J$C$?!#(J
X$@%G%U%)%k%H$N=PNO%3!<%I$rA*Br$G$-$k$h$&$K%=!<%9$rJQ99$7$?!#(J
X
X$@%Q%C%A$K$D$$$F(J
X
nkf $@$K$O?tB?$/$NHs8x<0%Q%C%A$,B8:_$9$k!#:#$^$G$=$l$i$rJT=8$7$F(J
X$@$-$?$o$1$@$,!":#2s!V7hDjHG!W$H$7$F%*%j%8%J%k$+$i$N%Q%C%A0lK\$K(J
X$@=8Ls$7$?!#$b$A$m$s!":NMQ$7$?%Q%C%A$N=PE5$OL@5-$7$F$"$k!#%Q%C%A(J
X$@$d%I%-%e%a%s%H$r=q$$$??M$N$&$A!"K\%Q%C%1!<%8$K4X$o$C$F$$$k$N$O(J
X$@0J2<$K<($9DL$j$G$"$k!#(J($@=gITF1!"7I>NN,(J)
X
X    void@merope.pleiades.or.jp (Kusakabe Youichi)
X    nide@ics.nara-wu.ac.jp (NIDE Naoyuki)
X    ohta@src.ricoh.co.jp (Junn Ohta)
X    inouet@strl.nhk.or.jp (Tomoyuki Inoue)
X    a_kuroe@hoffman.cc.sophia.ac.jp (Akihiko Kuroe)
X    kono@ie.u-ryukyu.ac.jp(Shinji Kono)
X
X$@:G8e$K(J
X
nkf$@$r(JGUI$@2=$7$?(JEasy nkf$@$r8x3+$7$F$$$^$9!#(J(http://www.mirai.or.jp/~cow/)
X$@B>$N%=%U%H$b$3$m$,$C$F$$$^$9$N$G!"2K$J?M$OGA$$$F$_$F$/$@$5$$!#(J
SHAR_EOF
  $shar_touch -am 1006155696 'nkf.doc' &&
  chmod 0644 'nkf.doc' ||
  echo 'restore of nkf.doc failed'
  shar_count="`wc -c < 'nkf.doc'`"
  test 13777 -eq "$shar_count" ||
    echo "nkf.doc: original size 13777, current size $shar_count"
fi
# ============= nkf.1 ==============
if test -f 'nkf.1' && test X"$1" != X"-c"; then
  echo 'x - skipping nkf.1 (file already exists)'
else
  echo 'x - extracting nkf.1 (text)'
  sed 's/^X//' << 'SHAR_EOF' > 'nkf.1' &&
X.TH NKF 1L 6/OCT/96
X.SH NAME
nkf \- Network Kanji code conversion Filter v1.6.2
X.SH SYNOPSIS
X.B nkf
[
X.B options
] [
X.B file
]
X.SH DESCRIPTION
X.PP
X.B Nkf
is a yet another kanji code converter among networks, hosts and terminals.
It converts input kanji code to designated kanji code
such as 7-bit JIS, MS-kanji (shifted-JIS) or EUC.
X.PP
One of the most unique facicility of 
X.B nkf
is the guess of the input kanji code.
It currently recognizes 7-bit JIS, MS-kanji (shifted-JIS) and EUC.
So users needn't the input kanji code specification.
X
By default X0201 kana is converted into X0208 kana. For
XX0201 kana, SO/SI, SSO and
ESC-(-I methods are supported. For automatic code detection, nkf assumes
no X0201 kana in MS-Kanji. To accept X0201 in MS-Kanji, use \-X, \-x or
\-S.
X.PP
Options are bellow:
X.TP
X.B \-b
bufferd output.
This is a default.
X.TP
X.B \-u
unbufferd output.
X.TP
X.B \-t
no operations.
X.TP
X.B \-j
output 7-bit JIS code.
This is a default.
X.TP
X.B \-s
output MS-kanji (shifted-JIS) code.
X.TP
X.B \-e
output EUC (AT&T) code.
X.TP
X.BI \-i c
output 
X.BI ESC\-$\- c
as sequence to designate JIS-kanji
(Default is
X.BR B .)
X.TP
X.BI \-o c
output 
X.BI ESC\-(\- c
as sequence to designate single-byte roman characters
(Default is
X.BR B .)
X.TP
X.B \-r
{de/en}crypt ROT13/47
X.TP
X.B \-v
display Version
X.TP
X.B \-T
Text mode output (MS-DOS)
X.TP
X.B \-m
MIME ISO-2022-JP/ISO8859-1 decode. To see ISO8859-1 (Latin-1) \-l is
necessary.
X.TP
X.B \-mB
Decode MIME base64 encoded stream. Remove header or other part before
conversion.
X.TP
X.B \-mQ
Decode MIME quoted stream. '_' in quoted is converted to space.
X.TP
X.B \-l
Input and output code is ISO8859-1 (Latin-1) and ISO-2022-JP.
\-s, \-e and \-x are not compatible with this option.
X.TP
X.BI \-f n
Folding on 
X.BI n 
length in a line. Default 60.
X.TP
X.B \-X
Allow X0201 kana in MS-Kanji.  
XX0201 is converted into X0208 by default.
This is default in MSDOS.
X.TP
X.B \-x
Try to preseve X0208 kana.
Assume X0201 kana in MS-Kanji. And
do not convert X0201 kana to X0208. 
In JIS output, ESC-(-I is used. In EUC output, SSO is used.
X.TP
X.B \-Z
Convert X0208 alphabet to ASCII. \-Z1 converts X0208 kankaku to one 
ASCII space. \-Z2 converts X0208 kankaku to two ASCII spaces.
X.TP
X.B \-S
Assume MS-Kanji and X0201 kana input. It also accpet JIS.
AT&T EUC is recognized as X0201 kana. Without \-x flag,
XX0201 kana is converted into X0208.
X.TP
X.B \-J
Assume  JIS input. It also accepts Japanese EUC.
This is the default. This flag does not excludde MS-Kanji.
X.TP
X.B \-E
Assume AT&T EUC input. It also accpet JIS.
Same as \-J.
X.TP
X.B \-B
Assume broken JIS-Kanji, which lost ESC.  Usefull when your site is 
using old B-News Nihongo patch. \-B1 allows any char after ESC-( or
ESC-$. \-B2 forces ASCII after NL.
X.TP
X.B \-O
Output result to file. The first name in arguments becomes output.
Please be careful. If there are no file arguments, nkf.out is chosen.
X.TP
X.B \-c
add CR after NL.
X.TP
X.B \-d
delete CR after NL.
X.SH "FILES"
nkf - binary
X.SH AUTHOR
Itaru Ichikawa <ichikawa@flab.fujitsu.co.jp>
(was ichikawa@fujitsu.JUNET)
X.SH EDITOR
a_kuroe@hoffman.cc.sophia.ac.jp (Akihiko Kuroe)
kono@ie.u-ryukyu.ac.jp (Shinji KONO)
X.SH BUGS
X.B Nkf
cannot handle some input that contains mixed kanji codes.
Automatic code detection 
becomes very weak with \-x, \-X and \-S. 
X
SHAR_EOF
  $shar_touch -am 1006155696 'nkf.1' &&
  chmod 0644 'nkf.1' ||
  echo 'restore of nkf.1 failed'
  shar_count="`wc -c < 'nkf.1'`"
  test 3296 -eq "$shar_count" ||
    echo "nkf.1: original size 3296, current size $shar_count"
fi
# ============= nkf.1j ==============
if test -f 'nkf.1j' && test X"$1" != X"-c"; then
  echo 'x - skipping nkf.1j (file already exists)'
else
  echo 'x - extracting nkf.1j (text)'
  sed 's/^X//' << 'SHAR_EOF' > 'nkf.1j' &&
X.TH NKF 1
X.SH NAME
nkf \- $@%M%C%H%o!<%/MQ4A;z%3!<%IJQ49%U%#%k%?(J v1.6.2
X.SH SYNOPSIS
X.B nkf
X.RI [ options ]
X.RI [ file ]
X.SH DESCRIPTION
\fInkf\fP$@$O%M%C%H%o!<%/$G%a!<%k$d%K%e!<%9$NFI$_=q$-$r$9$k$?$a$K:n$i$l$?!"4A(J
X$@;z%3!<%I$NJQ49%U%#%k%?$G$"$k!#(J
X.PP
X$@$3$N(J\fInkf\fP$@$NFCD'$H$7$F$O!"F~NO4A;z%3!<%I7O$NE}7WE*$J<+F0G'<15!G=$,$"$k!#(J
X$@$3$N$?$a!"MxMQ<T$O!"F~NO4A;z%3!<%I7O$,2?$G$"$k$+$rCN$i$J$/$F$b!"=PNO4A;z(J
X$@%3!<%I7O$N$_;XDj$9$l$PNI$$$3$H$K$J$k!#$?$@!"$3$NH=Dj5!9=$O!"M}O@E*$K$O40(J
X$@A4$G$O$J$$$,!"DL>o$N%K%e!<%9$d%a!<%k$N%a%C%;!<%8$K$D$$$F$O3N<B$KF0:n$9$k(J
X$@0BA4$J$b$N$K$O$J$C$F$$$k!#(J
X.PP
X$@8=:_!"(J\fInkf\fP$@$,G'<1$G$-$kF~NO$N4A;z%3!<%I7O$O!"$$$o$f$k!V(JJIS$@%3!<%I!W(J(ISO-
2022-JP$@$K4p$E$/$b$N(J)$@!"(JMS$@4A;z%3!<%I(J($@%7%U%H(JJIS)$@!"F|K\8l(JEUC(AT&T$@%3!<%I(J)$@$N$$(J
X$@$:$l$+$G$"$k!#=PNO$9$k4A;z%3!<%I7O$b!"$3$N(J3$@<oN`$G$"$k!#(J
X.PP
X$@F~NO$O!"%U%!%$%k$r;XDj$7$J$1$l$P!"I8=`F~NO$H$J$k!#=PNO$OI8=`=PNO$G$"$k!#(J
X.PP
X$@;XDj$G$-$k%*%W%7%g%s$O!"0J2<$NDL$j!#(J\fB\-mu\fP $@$N$h$&$KB3$1$k$3$H$,$G$-$k!#(J
X.TP
X.B \-b
X$@%P%C%U%!%j%s%0=PNO$r9T$&!#(J($@%G%U%)%k%H(J)
X.TP
X.B \-u
X$@=PNO;~$K!"%P%C%U%!%j%s%0$7$J$$!#(J
rsh localhost | nkf \-u $@$H$$$&$h$&$K;H$&!#(J
X.TP
X.B \-t
X$@2?$b$7$J$$!#(J
X.TP
X.B \-j
JIS$@%3!<%I$r=PNO$9$k!#(J($@%G%U%)%k%H(J)
X.TP
X.B \-e
EUC$@%3!<%I$r=PNO$9$k!#(J
X.TP
X.B \-s
X$@%7%U%H(JJIS$@%3!<%I$r=PNO$9$k!#(J
X.TP
X.BI \-i ?
JIS$@4A;z$r;X<($9$k%7!<%1%s%9$H$7$F(J \fBESC-'$'-\fP\fI?\fP$@$r;HMQ$9$k!#(J
($@%G%U%)%k%H$O!"(JESC-'$'-'B')
X.TP
X.BI \-o ?
1$@%P%$%H1Q?tJ8;z%;%C%H$r;X<($9$k%7!<%1%s%9$H$7$F!"(J\fBESC-'('-\fP\fI?\fP$@$r;HMQ$9(J
X$@$k!#(J
($@%G%U%)%k%H$O!"(JESC-'('-'B')
X.TP
X.B \-r
ROT13/47$@$NJQ49$r$9$k!#(J
X.TP
X.B \-v
X$@%P!<%8%g%s$rI=<($9$k!#(J
X.TP
X.B \-T
X$@%F%-%9%H%b!<%I$G=PNO$9$k!#(J(MS-DOS$@>e$G$N$_8zNO$r;}$D(J)
X.TP
X.B \-m
MIME $@$r2rFI$9$k!#(JISO-2022-JP(base64)$@$H(JISO-8859-1(Q encode)
X$@$N$_$r2rFI$9$k!#(JISO-8859-1 (Latin-1) $@$r2rFI$9$k;~$O!"(J
-l$@%U%i%0$bI,MW$G$"$k!#(J
X.TP
X.B \-l
0x80-0xfe$@$N%3!<%I$r(JISO-8859-1 (Latin-1)$@$H$7$F07$&!#(J
JIS$@%3!<%I%"%&%H%W%C%H$H$NAH9g$;$_$N$_M-8z!#(J
\-s, \-e, \-x$@$H$ON>N)$7$J$$!#(J
X.TP
X.BI \-f ?
X$@0l9T(J\fI?\fP$@J8;z$K$J$k$h$&$K4JC1$J@07A$r$*$3$J$&!#%G%U%)%k%H$O(J
60$@J8;z$G$"$k!#(J
X.TP
X.B \-Z
XX0208$@Cf$N1Q?t;z$H<c43$N5-9f$r(JASCII$@$KJQ49$9$k!#(J\-Z1 $@$O(JX0208$@4V3V$r(JASCII
space$@$KJQ49$9$k!#(J\-Z2$@$O(JX0208$@4V3V$r(JASCII space $@Fs$D$KJQ49$9$k!#<qL#$K$h$C$F(J
X$@;H$$J,$1$F$[$7$$!#(J
X.TP
X.B "\-J \-E \-S \-X \-B"
X$@4|BT$5$l$kF~NO%3!<%I$N@-<A$r;XDj$9$k!#(J
X.RS
X.IP \fB\-J\fP
ISO-2022-JP$@$r2>Dj$9$k!#(J
X.IP \fB\-E\fP
X$@F|K\8l(JEUC(AT&T)$@$r2>Dj$9$k!#(J
X.IP \fB\-S\fP
MS$@4A;z$r2>Dj$9$k!#(JX0201$@2>L>$b2>Dj$5$l$k!#(J
X.IP \fB\-X\fP
MS$@4A;zCf$K(JX0201$@2>L>$,$"$k$H2>Dj$9$k!#(J
X.IP \fB\-B\fP
X$@2u$l$?(J(Broken)JIS$@%3!<%I!#(JESC$@$,$J$/$J$C$?$H2>Dj$9$k!#(J
X.RS
X.IP \fB\-B1\fP
X \fBESC-(\fP, \fBESC-$\fP $@$N$"$H$N%3!<%I$rLd$o$J$$(J
X.IP \fB\-B2\fP
X$@2~9T$N$"$H$K6/@)E*$K(JASCII$@$NLa$9(J
X.RE
X.RE
X.TP
X.B \-x
X$@DL>o$*$3$J$o$l$k(JX0201$@2>L>(J->X0208$@$N2>L>JQ49$r$7$J$$$G!"(J
X X0201$@2>L>$rJ]B8$9$k!#F~NO$O!"(JMS-Kanji$@$N(J1byte$@2>L>!"(JSO/SI$@!"(J
ESC-(-I, SSO$@$r<u$1IU$1$k!#=PNO$O!"F|K\8l(JEUC$@Cf$G$O(JSSO$@!"(J
JIS$@$G$O(J ESC-'('-I $@$r;H$&!#(J
X.TP
X.B \-O
X$@%U%!%$%k$K=PNO$9$k!#(JUnix$@$G$OITMW$J5!G=$@$,(JWindows$@$d(JMSDOS$@$G$O(J
X$@I,MW$i$7$$!#D>8e$N0z$-?t$G$J$/!":G8e$N%U%!%$%kL>$,=PNO%U%!%$(J
X$@%kL>$H$J$j>e=q$-$5$l$F$7$^$&$N$GCm0U!#%U%!%$%kL>$,$J$$>l9g$O!"(J
X$@E,Ev$K7h$a$i$l$k(J(nkf.out$@$J$I(J)$@!#(J
X.TP
X.B \-c
NL$@$"$H$K(JCR$@$rIU2C$9$k!#(J
X.TP
X.B \-d
NL$@$"$H$N(JCR$@$r:o=|$9$k!#(J
X
X.SH AUTHOR
X
X$@;T@n(J  $@;j(J	ichikawa@flab.fujitsu.co.jp	(was ichikawa@fujitsu.JUNET)
X
X.SH ACKNOWLEDGE
X
morb@fujitsu, kiss@ayumi.stars.flab.fujitsu, cen122@flab.fujitsu,
yuki@flab.fujitsu $@B>!"(Jfujitsu & flab.fujitsu$@$N3'$5$s$N6(NO$K46<U!#(J
shinoda@cs.titech, kato@cs.titech, uematsu@cs.titech  TNX
kono@ie.u-ryukyu.ac.jp
X
X.SH BUGS
X
X$@<B$O!"F~NO$N%3!<%I7O$NH=Dj$O!"(JEUC$@$H%7%U%H(JJIS$@$H$N<+F0H=Dj$G$"$j!":G=i$K(J
X$@FCDj$G$-$kJ8;z$,Mh$?;~E@$G3NDj$7$F$7$^$&!#$=$7$F!"FCDjITG=$N4V$OJ]N1%P%C(J
X$@%U%!$K$?$a$F$*$+$l!"3NDj8e$K=hM}$5$l$k!#$3$N$?$a!"(J
X.IP 1)
7$@%S%C%H(JJIS$@$O>o$KG'<1$5$l$k!#%7%U%H(JJIS$@!"(JEUC$@:.9g$b$[$H$s$I$N(J
X$@>l9g$OLdBj$,$J$$!#$?$@$7!"(J
X.IP 2)
X$@%7%U%H(JJIS$@$N(JX0201$@2>L>$H(JEUC$@$,<1JL$G$-$J$$!#$7$?$,$C$F!"(J
X$@%G%U%)%k%H$G$O%7%U%H(JJIS$@$N(JX0201$@2>L>$O$J$$$H2>Dj$7$F$$$k!#(J
X.IP 3)
X$@$A$g$C$H!"$N$m$$!#(J($@=i4|$NHG$h$j$O2~NI$5$l$F$$$k(J)
X.PP
JIS$@4A;z$N?75lHG$N6hJL$H$+!"(JASCII$@$H(JJIS$@%m!<%^;z$N6hJL$J$I$K$D$$$F$OJ]B8$5(J
X$@$l$J$$!#(J
X.PP
X$@$3$N%U%#%k%?$NJQ49$O!"%3!<%I7O$KBP1~$7$?0l3g<LA|$r;\$9$@$1$J$N$G!"30;z(J
X$@$dFC<l5-9f$d7S@~AGJR$J$I!"(JJIS$@Bh0l!"BhFs?e=`I=$K$*$$$FDj5A$5$l$F$$$J$$%3!<(J
X$@%I$K3F<R$K$h$j3d$jEv$F$i$l$?J8;z$,$I$&$J$k$+$^$G$O4XCN$7$J$$!#$=$7$F!"Bh(J
X$@Fs?e=`$,$J$$$H$+$"$k$H$+$K$h$kLdBj$O!"$3$N%U%#%k%?$NHO0O30$H;W$($k!#$=$l(J
X$@$i$O!"=q$-<j$N@UG$$G$J$s$H$+$7$F$b$i$$$?$$!#(J
X.PP
X$@$$$:$l$K$;$h!"DL>o$N%K%e!<%9$N5-;v$K$D$$$F$OLdBj$O$J$/JQ49$G$-$k$O$:$G(J
X$@$"$k!#(J($@$H;W$&$N$@$,!":#$R$H$D<+?.$O$J$$(J)
X
X.SH "kono@csl.sony.co.jp (Shinji Kono) $@$K$h$kJQ99!#(J"
X
nkf 1.4 $@$N>iD9$@$1$I@N$OJXMx$@$C$?%*%W%7%g%s$N$$$/$D$+$O:o=|$5$l$F$$$k!#(J
\- \-n \-B$@$J$I!#(J
X.PP
XX0201$@2>L>$O%G%U%)%k%H$G(JX0208$@$KJQ49$5$l$k!#$?$@$7!"%7%U%H(JJIS$@$N(JX0201$@2>L>(J
X$@$O%G%U%)%k%H$G$O(JEUC$@$@$H2r<a$5$l$F$7$^$&!#$3$l$,K>$^$7$/$J$$;~$K$O(J \-S $@$d(J
\- \-X $@$J$I$N%U%i%0$r;H$($PNI$$!#(J\-X$@$r;XDj$9$k$H0lC63NDj$7$?%7%U%H(JJIS$@$+$i(J 
EUC$@$K0\9T$9$k$3$H$O$J$$!#(JESC-(-I$@$K$h$k(J X0201$@$O>o$KG'<1$5$l$k!#(JSI/SO
SSO$@$O!"(J\-l$@$,;XDj$5$l$F$$$J$1$l$P(JX0201$@$H2r<a$9$k!#(J
X.PP
MIME decode$@$O!"(JISO-2022-JP$@$N(Jbase64$@$H!"(JISO-8859-1$@$N(J16$@?J(Jencode$@$N$_(J
decode$@$9$k!#(J MIME decode$@$O!"C1=c$J2~9T$d6uGr$O0BA4$KFI$_Ht$P$5$l$k!#(J
X$@$H$$$&$3$H$O!"(J MIME decode$@Cf$N6uGr$OJ]B8$5$l$J$$!#(Jless$@$d(Jrn$@$G9T$,J,3d(J
X$@$5$l$?;~$O!"(J Terminal$@$K$h$C$F0[$J$k(J ESC-[-K $@$J$I$,A^F~$5$l$k$N$G!"(J
X$@40A4$K$O(Jdecode $@$G$-$J$$!#(JISO-8859-1 $@=PNO$O(JJIS $@%3!<%I=PNO$H$7$+N>N)$7$J$$!#(J
X.PP
Fold $@5!G=$O(Jfmt$@$H0[$J$j9TF,$N6uGr$rL5;k$9$k!#6XB'=hM}$O$"$k$,;XDj$5$l$?(J
X$@D9$5(J+5$@$G6/@)2~9T$9$k!#(J
X.PP
XX0201$@2>L>$O(Jrot47$@$5$l$J$$!#(J
X
X.SH nkf 1.6 "kono@ie.u-ryukyu.ac.jp (Shinji Kono) $@$K$h$kJQ99!#(J"
X
MIME $@$N%A%'%C%/$r$-$S$7$/$7$F(J($@CY$/$J$C$?J,(J)$@0BA4$K$J$C$?!#(J
X$@$7$?$,$C$FJ#?t9T$K$^$?$,$k(JMIME$@$O(Jdecode$@$5$l$J$$!#(J
MIME $@$ND>8e$N6uGr$OFI$_Ht$P$9!#(JQ-Encding $@$N(J_$@$O6uGr$KJQ49$5$l$k!#(J
X -B $@$N(Jlevel$@$r(J0,1,2 $@$KA}$d$7$?!#(JMIME$@$N(Jbase64, Q-Encoding$@$r2rFI$9$k(J
X$@5!G=$rIU$1$?!#%X%C%@$J$I$O2rFI$7$J$$$N$G!"(JEncode$@$5$l$?ItJ,$@$1$r(J
X$@DL$9I,MW$,$"$k!#(J -mB $@$O!"(Jnkf1.5$@$H0c$&F0$-$r$9$k$N$G!"(J-B -m $@$H$9$k$3$H!#(J
X
X.SH nkf 1.6.1
X
\-Z $@$G!A(J \-> ~$@$NJQ49$r;_$a$?!#(J
\-Z1 $@$G(JX0208$@4V3V(J\->ASCII space$@$NJQ49$r$*$3$J$&!#(J
\-Z2 $@$G(JX0208$@4V3V(J\->ASCII space 2$@8D$NJQ49$r$*$3$J$&!#(J
X.PP
kabe@dais.is.tohoku.ac.jp (Taketo Kabe) $@$K$h$kF|K\8l(Jroff $@$N%=!<%9$,(J
X.SH nkf 1.6.2
X$@$-$^$7$?!#(J
X
SHAR_EOF
  $shar_touch -am 1006155696 'nkf.1j' &&
  chmod 0644 'nkf.1j' ||
  echo 'restore of nkf.1j failed'
  shar_count="`wc -c < 'nkf.1j'`"
  test 7364 -eq "$shar_count" ||
    echo "nkf.1j: original size 7364, current size $shar_count"
fi
# ============= nkf_test.pl ==============
if test -f 'nkf_test.pl' && test X"$1" != X"-c"; then
  echo 'x - skipping nkf_test.pl (file already exists)'
else
  echo 'x - extracting nkf_test.pl (text)'
  sed 's/^X//' << 'SHAR_EOF' > 'nkf_test.pl' &&
#!/usr/local/bin/perl
#
# nkf test program for nkf 1.6
#    Shinji KONO <kono@ie.u-ryukyu.ac.jp>
# Sun Aug 18 12:25:40 JST 1996
#
# This is useful when you add new patch on nkf.
# This test is too strict, faileurs do not mean
# wrong conversion. 
#
# nkf 1.5 differs on MIME decoding
# nkf 1.4 passes Basic Conversion tests
# nkf PDS version passes Basic Conversion tests  using "nkf -iB -oB "
#
# MSDOS binary does not pass MIME (unbuf) test.
#
X
$nkf = "./nkf";
# $nkf = "doscmd nkf.exe";
X
# If you want to see the testing process, set next flag.
X
$detail_all = 0;
X
sub test {
X    local ($nkf,$in,$ans,$detail) = @_;
X    local ($result);
X
X    $result = '';
X    open(OUT,"> nkf.in");
X    print OUT $in;
X    close(OUT);
X    system("$nkf <nkf.in >nkf.out");   # easy
X    open(IN,"< nkf.out");
X    print STDERR "\nINPUT:\n",$in  if ($detail || $detail_all);
X    print STDERR "\nEXPECT:\n", $ans if ($detail || $detail_all);
X    while(<IN>) {
X	$result .= $_;
X    }
X    print STDERR "\nGOT:\n",$result if ($detail || $detail_all);
X    return ($result eq $ans)?"Ok\n":"Fail\n";
}
X
# Basic Conversion
print "\nBasic Conversion test\n\n";
X
# I gave up simple literal quote because there are big difference
# on perl4 and perl5 on literal quote. Of course we cannot use
# jperl.
X
$example{'jis'} = unpack('u',<<'eofeof');
M1FER<W0@4W1A9V4@&R1"(3DQ(3%^2R%+?D]3&RA"(%-E8V]N9"!3=&%G92`;
M)$)0)TU:&RA"($AI<F%G86YA(!LD0B0B)"0D)B0H)"HD;R1R)',;*$(*2V%T
M86MA;F$@&R1")2(E)"4F)2@E*B5O)7(E<QLH0B!+:6=O=2`;)$(A)B%G(S`C
/029!)E@G(B=!*$`;*$(*
eofeof
X
$example{'sjis'} = unpack('u',<<'eofeof');
M1FER<W0@4W1A9V4@@5B)0(F>ED"6GIAR(%-E8V]N9"!3=&%G92"8I9=Y($AI
M<F%G86YA((*@@J*"I(*F@JB"[8+P@O$*2V%T86MA;F$@@T&#0X-%@T>#28./
>@Y*#DR!+:6=O=2"!18&'@D^"8(._@]:$081@A+X*
eofeof
X
$example{'euc'} = unpack('u',<<'eofeof');
M1FER<W0@4W1A9V4@H;FQH;'^RZ'+_L_3(%-E8V]N9"!3=&%G92#0I\W:($AI
M<F%G86YA(*2BI*2DIJ2HI*JD[Z3RI/,*2V%T86MA;F$@I:*EI*6FI:BEJJ7O
>I?*E\R!+:6=O=2"AIJ'GH["CP:;!IMBGHJ?!J,`*
eofeof
X
X
# From JIS
X
print "JIS  to JIS ... ",&test("$nkf   ",$example{'jis'},$example{'jis'});
print "JIS  to SJIS... ",&test("$nkf -s",$example{'jis'},$example{'sjis'});
print "JIS  to EUC ... ",&test("$nkf -e",$example{'jis'},$example{'euc'});
X
# From SJIS
X
print "SJIS to JIS ... ",&test("$nkf -j",$example{'sjis'},$example{'jis'});
print "SJIS to SJIS... ",&test("$nkf -s",$example{'sjis'},$example{'sjis'});
print "SJIS to EUC ... ",&test("$nkf -e",$example{'sjis'},$example{'euc'});
X
# From EUC
X
print "EUC  to JIS ... ",&test("$nkf   ",$example{'euc'},$example{'jis'});
print "EUC  to SJIS... ",&test("$nkf -s",$example{'euc'},$example{'sjis'});
print "EUC  to EUC ... ",&test("$nkf -e",$example{'euc'},$example{'euc'});
X
# Ambigous Case
X
$example{'amb'} = unpack('u',<<'eofeof');
MI<*PL:7"L+&EPK"QI<*PL:7"L+&EPK"QI<*PL:7"L+&EPK"QI<*PL:7"L+&E
MPK"QI<*PL:7"L+&EPK"QI<(*I<*PL:7"L+&EPK"QI<*PL:7"L+&EPK"QI<*P
ML:7"L+&EPK"QI<*PL:7"L+&EPK"QI<*PL:7"L+&EPK"QI<(*I<*PL:7"L+&E
MPK"QI<*PL:7"L+&EPK"QI<*PL:7"L+&EPK"QI<*PL:7"L+&EPK"QI<*PL:7"
ML+&EPK"QI<(*I<*PL:7"L+&EPK"QI<*PL:7"L+&EPK"QI<*PL:7"L+&EPK"Q
MI<*PL:7"L+&EPK"QI<*PL:7"L+&EPK"QI<(*I<*PL:7"L+&EPK"QI<*PL:7"
ML+&EPK"QI<*PL:7"L+&EPK"QI<*PL:7"L+&EPK"QI<*PL:7"L+&EPK"QI<(*
eofeof
X
$example{'amb.euc'} = unpack('u',<<'eofeof');
M&R1")4(P,25",#$E0C`Q)4(P,25",#$E0C`Q)4(P,25",#$E0C`Q)4(P,25"
M,#$E0C`Q)4(P,25",#$E0C`Q)4(;*$(*&R1")4(P,25",#$E0C`Q)4(P,25"
M,#$E0C`Q)4(P,25",#$E0C`Q)4(P,25",#$E0C`Q)4(P,25",#$E0C`Q)4(;
M*$(*&R1")4(P,25",#$E0C`Q)4(P,25",#$E0C`Q)4(P,25",#$E0C`Q)4(P
M,25",#$E0C`Q)4(P,25",#$E0C`Q)4(;*$(*&R1")4(P,25",#$E0C`Q)4(P
M,25",#$E0C`Q)4(P,25",#$E0C`Q)4(P,25",#$E0C`Q)4(P,25",#$E0C`Q
M)4(;*$(*&R1")4(P,25",#$E0C`Q)4(P,25",#$E0C`Q)4(P,25",#$E0C`Q
>)4(P,25",#$E0C`Q)4(P,25",#$E0C`Q)4(;*$(*
eofeof
X
$example{'amb.sjis'} = unpack('u',<<'eofeof');
M&RA))4(P,25",#$E0C`Q)4(P,25",#$E0C`Q)4(P,25",#$E0C`Q)4(P,25"
M,#$E0C`Q)4(P,25",#$E0C`Q)4(;*$(*&RA))4(P,25",#$E0C`Q)4(P,25"
M,#$E0C`Q)4(P,25",#$E0C`Q)4(P,25",#$E0C`Q)4(P,25",#$E0C`Q)4(;
M*$(*&RA))4(P,25",#$E0C`Q)4(P,25",#$E0C`Q)4(P,25",#$E0C`Q)4(P
M,25",#$E0C`Q)4(P,25",#$E0C`Q)4(;*$(*&RA))4(P,25",#$E0C`Q)4(P
M,25",#$E0C`Q)4(P,25",#$E0C`Q)4(P,25",#$E0C`Q)4(P,25",#$E0C`Q
M)4(;*$(*&RA))4(P,25",#$E0C`Q)4(P,25",#$E0C`Q)4(P,25",#$E0C`Q
>)4(P,25",#$E0C`Q)4(P,25",#$E0C`Q)4(;*$(*
eofeof
X
print "Ambiguous Case. ",
X    &test("$nkf",$example{'amb'},$example{'amb.euc'});
X
# Input assumption
X
print "SJIS  Input assumption ",
X    &test("$nkf -Sx",$example{'amb'},$example{'amb.sjis'});
X
# X0201 $@2>L>(J
# X0201->X0208 conversion
# X0208 aphabet -> ASCII
# X0201 $@Aj8_JQ49(J
X
print "\nX0201 test\n\n";
X
$example{'x0201.sjis'} = unpack('u',<<'eofeof');
MD5.*<(-*@TR#3H-0@U*#2X--@T^#48-3"I%3B7""8()A@F*"8X)D@F6"9H*!
M@H*"@X*$@H6"AH*'"I%3BTR-AH%)@9>!E(&0@9.!3X&5@9:!:8%J@7R!>X&!
M@6V!;H%O@7"!CPJ4O(IPMK>X/;FZMMZWWKC>N=ZZWH+&"I2\BG#*W\O?S-_-
MW\[?M]^QW@K*W\O?S`IH86YK86MU(,K?R]_,I`K*W\O?S-VA"I2\BG""S(SC
!"@!"
eofeof
X
$example{'x0201.euc'} = unpack('u',<<'eofeof');
MP;2ST:6KI:VEKZ6QI;.EK*6NI;"ELJ6T"L&TL=&CP:/"H\.CQ*/%H\:CQZ/A
MH^*CXZ/DH^6CYJ/G"L&TM:VYYJ&JH?>A]*'PH?.AL*'UH?:ARJ'+H=VAW*'A
MH<ZASZ'0H=&A[PK(OK/1CK:.MXZX/8ZYCKJ.MH[>CK>.WHZXCMZ.N8[>CKJ.
MWJ3("LB^L]&.RH[?CLN.WX[,CM^.S8[?CLZ.WXZWCM^.L8[>"H[*CM^.RX[?
MCLP*:&%N:V%K=2".RH[?CLN.WX[,CJ0*CLJ.WX[+CM^.S([=CJ$*R+ZST:3.
#N.4*
eofeof
X
$example{'x0201.jis'} = unpack('u',<<'eofeof');
M&R1"030S424K)2TE+R4Q)3,E+"4N)3`E,B4T&RA""ALD0D$T,5$C02-"(T,C
M1"-%(T8C1R-A(V(C8R-D(V4C9B-G&RA""ALD0D$T-2TY9B$J(7<A="%P(7,A
M,"%U(78A2B%+(5TA7"%A(4XA3R%0(5$A;QLH0@H;)$)(/C-1&RA)-C<X&RA"
M/1LH23DZ-EXW7CA>.5XZ7ALD0B1(&RA""ALD0D@^,U$;*$E*7TM?3%]-7TY?
M-U\Q7ALH0@H;*$E*7TM?3!LH0@IH86YK86MU(!LH24I?2U],)!LH0@H;*$E*
97TM?3%TA&RA""ALD0D@^,U$D3CAE&RA""@``
eofeof
X
$example{'x0201.sosi'} = unpack('u',<<'eofeof');
M&R1"030S424K)2TE+R4Q)3,E+"4N)3`E,B4T&RA*"ALD0D$T,5$C02-"(T,C
M1"-%(T8C1R-A(V(C8R-D(V4C9B-G&RA*"ALD0D$T-2TY9B$J(7<A="%P(7,A
M,"%U(78A2B%+(5TA7"%A(4XA3R%0(5$A;QLH2@H;)$)(/C-1&RA*#C8W.`\;
M*$H]#CDZ-EXW7CA>.5XZ7@\;)$(D2!LH2@H;)$)(/C-1&RA*#DI?2U],7TU?
M3E\W7S%>#PH.2E]+7TP/&RA*"FAA;FMA:W4@#DI?2U],)`\;*$H*#DI?2U],
672$/&RA*"ALD0D@^,U$D3CAE&RA""@``
eofeof
X
$example{'x0201.x0208'} = unpack('u',<<'eofeof');
M&R1"030S424K)2TE+R4Q)3,E+"4N)3`E,B4T&RA""ALD0D$T,5$;*$)!0D-$
M149'86)C9&5F9PH;)$)!-#4M.68;*$(A0",D)5XF*B@I+2L]6UU[?1LD0B%O
M&RA""ALD0D@^,U$E*R4M)2\;*$(]&R1")3$E,R4L)2XE,"4R)30D2!LH0@H;
M)$)(/C-1)5$E5"57)5HE724M(2PE(B$K&RA""ALD0B51)50E51LH0@IH86YK
M86MU(!LD0B51)50E52$B&RA""ALD0B51)50E525S(2,;*$(*&R1"2#XS421.
&.&4;*$(*
eofeof
X
# -X is necessary to allow X0201 in SJIS
# -Z convert X0208 alphabet to ASCII
print "X0201 conversion: SJIS ",
X    &test("$nkf -XZ",$example{'x0201.sjis'},$example{'x0201.x0208'});
print "X0201 conversion: JIS  ",
X    &test("$nkf -Z",$example{'x0201.jis'},$example{'x0201.x0208'});
print "X0201 conversion:SI/SO ",
X    &test("$nkf -Z",$example{'x0201.sosi'},$example{'x0201.x0208'});
print "X0201 conversion: EUC  ",
X    &test("$nkf -Z",$example{'x0201.euc'},$example{'x0201.x0208'});
# -x means X0201 output
print "X0201 output: SJIS     ",
X    &test("$nkf -xs",$example{'x0201.euc'},$example{'x0201.sjis'});
print "X0201 output: JIS      ",
X    &test("$nkf -xj",$example{'x0201.sjis'},$example{'x0201.jis'});
print "X0201 output: EUC      ",
X    &test("$nkf -xe",$example{'x0201.jis'},$example{'x0201.euc'});
X
# MIME decode
X
print "\nMIME test\n\n";
X
# MIME ISO-2022-JP
X
$example{'mime.iso2022'} = unpack('u',<<'eofeof');
M/3])4T\M,C`R,BU*4#]"/T=Y4D%.144W96E23TI566Q/4U9)1WEH2S\]"CT_
M:7-O+3(P,C(M2E`_0C]'>5)!3D5%-V5I4D]*55EL3U-624=Y:$L_/0H]/VES
M;RTR,#(R+4I0/U$_/3%")$(D1B11/3%"*$)?96YD/ST*&R1`)#TD)B0K)$H;
M*$H@/3])4T\M,C`R,BU*4#]"/T=Y4D%.144W96E23U!Y:S=D:'-O4V<]/3\]
M(&5N9"!O9B!L:6YE"CT_25-/+3(P,C(M2E`_0C]'>5)!3D5%-V5I4D]0>6LW
M9&AS;U-G/3T_/2`]/TE33RTR,#(R+4I0/T(_1WE204Y%13=E:5)/4'EK-V1H
M<V]39ST]/ST*0G)O:V5N(&-A<V4*/3])4T\M,C`R,BU*4#]"/T=Y4D%.144W
M96E23U!Y:S=D"FAS;U-G/3T_/2`]/TE33RTR,`HR,BU*4#]"/T=Y4D%.144W
M96E23U!Y:S=D:'-O4V<]/3\]"CT_25-/+3(P,C(M2E`_0C]'>5)!3D5%-V5I
44D]*55EL3QM;2U-624=Y:$L_/0H_
eofeof
X
$example{'mime.ans'} = unpack('u',<<'eofeof');
M&R1"-$$[>B1.)48E.25(&RA""ALD0C1!.WHD3B5&)3DE2!LH0@H;)$(D1B11
M&RA"(&5N9`H;)$(D/20F)"LD2ALH0B`;)$(T03MZ)$X_*3MV&RA"96YD(&]F
M(&QI;F4*&R1"-$$[>B1./RD[=C1!.WHD3C\I.W8;*$(*0G)O:V5N(&-A<V4*
M/3])4T\M,C`R,BU*4#]"/T=Y4D%.144W96E23U!Y:S=D"FAS;U-G/3T_/2`]
M/TE33RTR,`HR,BU*4#]"/T=Y4D%.144W96E23U!Y:S=D:'-O4V<]/3\]"CT_
L25-/+3(P,C(M2E`_0C]'>5)!3D5%-V5I4D]*55EL3QM;2U-624=Y:$L_/0H_
eofeof
X
$example{'mime.unbuf'} = unpack('u',<<'eofeof');
M&R1"-$$[>B1.)48E.25(&RA""ALD0C1!.WHD3B5&)3DE2!LH0@H;)$(D1B11
M&RA"(&5N9`H;)$(D/20F)"LD2ALH0B`;)$(T03MZ)$X_*3MV&RA"96YD(&]F
M(&QI;F4*&R1"-$$[>B1./RD[=C1!.WHD3C\I.W8;*$(*0G)O:V5N(&-A<V4*
M&R1"-$$[>B1./RD;*$)H<V]39ST]/ST@/3])4T\M,C`*,C(M2E`_0C]'>5)!
M3D5%-V5I4D]0>6LW9&AS;U-G/3T_/0H;)$(T03MZ)$XE1ALH0EM+4U9)1WEH
$2S\]"F5I
eofeof
X
$example{'mime.base64'} = unpack('u',<<'eofeof');
M9W-M5"])3&YG<FU#>$I+-&=Q=4,S24LS9W%Q0E%:3TUI-39,,S0Q-&=S5T)1
M43!+9VUA1%9O3T@*9S)+1%1O3'=K8C)1;$E+;V=Q2T-X24MG9W5M0W%*3EEG
<<T=#>$E+9V=U;4,X64Q&9W)70S592VMG<6U""F=Q
eofeof
X
$example{'mime.base64.ans'} = unpack('u',<<'eofeof');
M&R1")$M&?B1I)#LD1D0Z)"TD7B0Y)"PA(D5L-7XV83E9)$<A(ALH0@T*&R1"
M(T<E-R5G)4,E+R1R0C\_="0J)"0D1B0B)&LD*D4Y)$,D1B0B)&LD<R1')#<D
(9R0F)"L;*$(E
eofeof
X
print "MIME decode            ",
X    &test("$nkf -m",$example{'mime.iso2022'},$example{'mime.ans'});
# unbuf mode implies more pessimistic decode
print "MIME decode (unbuf)    ",
X    &test("$nkf -mu",$example{'mime.iso2022'},$example{'mime.unbuf'});
print "MIME decode (base64)   ",
X    &test("$nkf -mB",$example{'mime.base64'},$example{'mime.base64.ans'});
X
# MIME ISO-8859-1
X
$example{'mime.is8859'} = unpack('u',<<'eofeof');
M/3])4T\M.#@U.2TQ/U$_*CU#-V%V83\_/2`*4&5E<B!4]G)N9W)E;@I,87-S
M92!(:6QL97+X92!0971E<G-E;B`@7"`B36EN(&MA97!H97-T(&AA<B!F86%E
M="!E="!F;V5L(2(*06%R:'5S(%5N:79E<G-I='DL($1%3DU!4DL@(%P@(DUI
<;B!KYG!H97-T(&AA<B!FY65T(&5T(&;X;"$B"@!K
eofeof
X
$example{'mime.is8859.ans'} = unpack('u',<<'eofeof');
M*L=A=F$_(`I0965R(%3V<FYG<F5N"DQA<W-E($AI;&QE<OAE(%!E=&5R<V5N
M("!<(")-:6X@:V%E<&AE<W0@:&%R(&9A865T(&5T(&9O96PA(@I!87)H=7,@
M56YI=F5R<VET>2P@1$5.34%22R`@7"`B36EN(&OF<&AE<W0@:&%R(&;E970@
)970@9OAL(2(*
eofeof
X
# Without -l, ISO-8859-1 was handled as X0201.
X
print "MIME ISO-8859-1 (Q)    ",
X    &test("$nkf -ml",$example{'mime.is8859'},$example{'mime.is8859.ans'});
X
# test for -f is not so simple.
X
# end
X
SHAR_EOF
  $shar_touch -am 1006160996 'nkf_test.pl' &&
  chmod 0644 'nkf_test.pl' ||
  echo 'restore of nkf_test.pl failed'
  shar_count="`wc -c < 'nkf_test.pl'`"
  test 10300 -eq "$shar_count" ||
    echo "nkf_test.pl: original size 10300, current size $shar_count"
fi
#!/bin/sh
# This is a shell archive (produced by GNU sharutils 4.1).
# To extract the files from this archive, save it to some FILE, remove
# everything before the `!/bin/sh' line above, then type `sh FILE'.
#
# Made on 1996-10-06 16:10 JST by <kono@leo.ie.u-ryukyu.ac.jp>.
# Source directory was `/user/kono/src/nkf/nkf16'.
#
# Existing files will *not* be overwritten unless `-c' is specified.
#
# This shar contains:
# length mode       name
# ------ ---------- ------------------------------------------
#  22176 -rwxr-xr-x nkf.exe
#
touch -am 1231235999 $$.touch >/dev/null 2>&1
if test ! -f 1231235999 && test -f $$.touch; then
  shar_touch=touch
else
  shar_touch=:
  echo
  echo 'WARNING: not restoring timestamps.  Consider getting and'
  echo "installing GNU \`touch', distributed in GNU File Utilities..."
  echo
fi
rm -f 1231235999 $$.touch
#
# ============= nkf.exe ==============
if test -f 'nkf.exe' && test X"$1" != X"-c"; then
  echo 'x - skipping nkf.exe (file already exists)'
else
  echo 'x - extracting nkf.exe (binary)'
  sed 's/^X//' << 'SHAR_EOF' | uudecode &&
begin 600 nkf.exe
M35J@`"P``P`@`%,(__^5#8``````````/@````$`^S!J<@``````````````
M```````````````````````!````W@```!`!````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M``````````````````````"Z>`0NB18U`K0PS2&++@(`BQXL`([:HY``C`:.
M`(D>B@")+J8`Z#T!Q#Z(`(O'B]BY_W_\\J[C84,F.`5U]H#-@/?9B0Z(`+D!
M`-/C@\,(@^/XB1Z,`(S:*^J+/D8,@?\``G,'OP`"B3Y&#(''RI%R*`,^"@IR
M(K$$T^]'.^]R&8,^1@P`=`>#/@H*`'4.OP`0.^]W!XO]ZP/IA`&+WP/:B1Z>
M`(D>H@"AC@`KV([`M$I7S2%?T^?ZCM*+Y_LSP"Z.!C4"ORH-N<J1*\_\\ZJT
M`,T:B1:4`(D.E@`S[;AW!([8O@``OPP`Z.H`+HX>-0+_-H8`_S:$`/\V@@#H
M.@$NQ@;G`7(NQ@;6`0!0Z-0KN'<$CMB^#`"_#`#HN``NCAXU`O\6F`C_%IH(
M_Q:<""Z.'C4"Z'(`,\"+\+DM``($@-0`1N+X+:4,=`FY&0"Z+0#HQ0"+[+1,
MBD8"S2&Y#@"Z1@#IP0`>N``US2&)'G(`C`9T`+@$-<TAB1YV`(P&>`"X!37-
M(8D>>@",!GP`N`8US2&)'GX`C`:``+@`)8S*CMJZ7`'-(1_#'K@`)<46<@#-
M(1\>N`0EQ19V`,TA'QZX!27%%GH`S2$?'K@&)<46?@#-(1_#M/^+UXO>.]]T
M%(`__W0*.&<!=P6*9P&+TX/#!NOH.]=T((O:'@<&@#\`Q@?_+HX>-0)T!R;_
M7P(?Z\4F_U<"'^N^P[1`NP(`S2'#N1X`NE0`+HX>-0+HZO^X`P!0Z/G^```!
M`%6+[%97QP8L#9@8_TX$@T8&`NFD`8M>!HLWZ8T!B]Y&B@>8+4(`B]B#^S9V
M`^EX`='C+O^GS`7'!K0```#I:@''!K0``0#I80''!K@``0#I6`''!BP-F!CI
M3P''!BP-4A/I1@''!BP-`Q;I/0''!L@``0#'!KX`!@#I+@&`/$!T!8`\0G4&
MB@2BU`!&Z1L!@#Q*=`J`/$)T!8`\2'4&B@2BU0!&Z0,!QP:\``$`Z?H`QP:Z
M````Z?$`Z$$HN`$`4.CG*5GIXP#'!KX`!`#IV@#'!KX`!0"#/LH``W4&QP;*
M``$`Z<0`@#PY?Q:`/#!\$8H,@,'0N`$`T^`)!L``1NL&@0[```$`Z:``QP;*
M````Z9<`QP;*``$`Z8X`QP;0``$`5NC:,UFCT@"#/M(``'X(@3[2```"?`;'
M!M(`/`#K`4:`/#!\!8`\.7[UZUS'!L(``0"`/$)T!8`\474-B@28H]P`1L<&
MQ``'`.L]@#PY?Q:`/#!\$8H,@,'0N`$`T^`)!L8`1NL&@0[&``$`ZQK'!MX`
M`0#K$L<&X``!`.L*QP;B``$`ZP+K`(`\`'0#Z6O^_TX$@T8&`H-^!`!^#8M>
M!HL?@#\M=0/I2?Z#/L@``'0D@3XL#9@8=0>#/LH``'45N#<#4+B^"%#HYRM9
M6;@!`%#HM"A9@SZZ``%U#K@`@%"@L@B84.BC+UE9@SZT``!T#C/`4+BN"%#H
M;2]96>L5N`!`4#/`4+AP35"XK@A0Z#\P@\0(@WX$`'5&@SZZ``%U#K@`@%"@
MH@B84.A>+UE9N`!`4#/`4+AP#5"XG@A0Z`\P@\0(@SZX``!T"KB>"%#HC0%9
MZPBXG@A0Z.,!6>GZ`.GJ`+AO`U"+7@:#1@8"_S?HU2I968OX"\!U%H-N!@*+
M7@;_-^A*+%FX___IWP#IO`"#/MX``75V@WX$`74SN*X(4+AQ`U"+7@:#1@8"
M_S?HM"J#Q`8+P'43@VX&`HM>!O\WZ`PL6;C__^FA`/].!.LHN*X(4+A[`U"X
M<P-0Z(8J@\0&"\!U$H-N!@*+7@;_-^C>*UFX___K=(,^N@`!=0ZX`(!0H+((
MF%#H?RY968,^N@`!=0ZX`(!0BD4$F%#H:BY96;@`0%`SP%"X<`U05^@>+X/$
M"(,^N```=`=7Z)\`6>L%5^CX`%E7Z%\G68M&!/].!`O`=`/I"?^#/MX``74(
MN*X(4.A#)UDSP.L`7UY=PZ8#X0/A`P`#X0/A`^$#X0,``^$#X0/A`^$#R0/A
M`^$#X0,)`^D"X0/A`^$#3`/A`Q\#X0/A`^$#X0/A`^$#X0-P`M$#V0.4`E4#
MX0/A`[4"BP+A`Z8"AP.+`L@"X0/A`^`"G0*"`GD"\@+A`T,#58OL3$Q6BW8$
MZRFAK@A`HZX("\!]$8L>N`C_!K@(BD;^B`>T`.L-N*X(4(I&_E#H]2I968L$
M2(D$"\!\#(M<"O]$"HH'M`#K!5;HO#)9B4;^/?__=;6X`0#K`%Z+Y5W#58OL
M3$Q65XMV!#/_@SZ^``1T!X,^O@`&=0['!K8``0"A+`VC*@WK(8,^O@`%=0['
M!K8``0#'!BH-\A+K#,<&M@```*$L#:,J#<<&V````,<&U@```,<&V@```.E;
M"@O_=`/IQ@"#/M@``'0#Z;P`@W[^?WP#Z;,`@S[<``!T`^FI`(,^U@``=`/I
MGP"#/MH``'0#Z94`@S[0``!T`^F+`(,^O```=`/I@0#K1J&N"$"CK@@+P'T1
MBQZX"/\&N`B*1OZ(![0`ZPVXK@A0BD;^4.CT*5E9BP1(B00+P'P,BUP*_T0*
MB@>T`.L%5NB[,5F)1OZ#?OX]="J#?OX.="2#?O[_=!Z#?OX;=!B#?OXD=!*#
M?OY_?0R#?OX-=`:#?OX*=8J#?O[_=0/IP0D+_W1E@_]_?DJ#/K8``'4T@7[^
MH`!^$O]V_E=6Z+H)@\0&,__I9PGK&8-^_D!]!S/_Z5H)ZPS'!K8``0#'!BH-
M\A+K#8-^_D!]!S/_Z3\)ZP#K$X-^_G]T!H-^_B!_!S/_Z2H)ZP#I!`F#?OY_
M?P/IT0.#/K8``'4Z@S[(``!U,X%^_J``?0['!K8``0#'!BH-\A+K%8%^_N``
M?0['!K8``0"A+`VC*@WK`(M^_NG>".F-`X,^R```=`/I@P.!?OZ@`'T#Z3\!
M@7[^X`!\`^DU`8$^*@WR$G0#Z2H!@S[*``-U#Z$L#:,J#8M^_NF?".D1`8,^
MR@``=0/I!P&+7O[1XX"_)@``=0^+7O[1XX"_J```=0/IR0"#/MP``'4<BP1(
MB00+P'P,BUP*_T0*B@>T`.L%5NA',%GK!5;HM1M9B_@]__]U(XM>_M'CBH>E
M_[0`4(M>_M'CBH>D_[0`4/\6+`U96>E:".M@@?_>`'4EBU[^T>.*AR<`M`!0
MBU[^T>.*AR8`M`!0_Q8L#5E9,__I_`?K-8'_WP!U+XM>_M'C@+^H``!T(XM>
M_M'CBH>I`+0`4(M>_M'CBH>H`+0`4/\6+`U963/_Z<4'@S[<``!U"597Z+<T
M65GK!5?H#B!9,_^+7O[1XXJ'I?^T`%"+7O[1XXJ'I/^T`%#_%BP-65GIC0?K
M`.DZ`H%^_HX`=`/I#0*!/BH-\A)U`^D"`H,^W```=1R+!$B)!`O`?`R+7`K_
M1`J*![0`ZP56Z$,O6>L%5NBQ&EF)1OZ#/LH``'4#Z<L!@7[^H`!]`^G!`8%^
M_N``?`/IMP&+7O[1XX"_)@``=0^+7O[1XX"_J```=0/I>0&#/MP``'4<BP1(
MB00+P'P,BUP*_T0*B@>T`.L%5NC?+EGK!5;H31I9B_@]__]U(8M>_M'CBH>E
M_[0`4(M>_M'CBH>D_[0`4/\6+`U96>GR!H'_C@!T.X,^W```=0E65^BK,UE9
MZP57Z`(?63/_BU[^T>.*AZ7_M`!0BU[^T>.*AZ3_M`!0_Q8L#5E9Z8$&Z>@`
M@S[<``!U'(L$2(D$"\!\#(M<"O]$"HH'M`#K!5;H3BY9ZP56Z+P968OX/?__
M=3&+7O[1XXJ'I?^T`%"+7O[1XXJ'I/^T`%#_%BP-65FXC@!0,\!0_Q8L#5E9
MZ50&Z8@`@?_>`'4EBU[^T>.*AR<`M`!0BU[^T>.*AR8`M`!0_Q8L#5E9,__I
M]07K78'_WP!U,8M>_M'C@+^H``!T)8M>_M'CBH>I`+0`4(M>_M'CBH>H`+0`
M4/\6+`U963/_Z;X%ZR:+7O[1XXJ'I?^T`%"+7O[1XXJ'I/^T`%#_%BP-65F)
M?OXS_^E._HM>_M'CBH>E_[0`4(M>_M'CBH>D_[0`4/\6+`U96>EU!>L`ZR.!
M?OZ@`'T6@3XJ#?(2=`['!BH-\A*+?O[I5@7K!HM^_NE.!>DJ!8-^_B!_`^D-
M`X-^_G]U`^D$`X,^V@``=0/I/`&!3OZ``(,^R@``=0/I*@&#/L@``'0*@S[8
M``)T`^D9`8%^_J``?0/I#P&!?O[@`'P#Z04!BU[^T>.`OR8``'4/BU[^T>.`
MOZ@``'4#Z<<`@S[<``!U'(L$2(D$"\!\#(M<"O]$"HH'M`#K!5;HL"Q9ZP56
MZ!X868OX/?__=2.+7O[1XXJ'I?^T`%"+7O[1XXJ'I/^T`%#_%BP-65GIPP3K
M7H/_7G4EBU[^T>.*AR<`M`!0BU[^T>.*AR8`M`!0_Q8L#5E9,__I9@3K-(/_
M7W4OBU[^T>.`OZ@``'0CBU[^T>.*AZD`M`!0BU[^T>.*AZ@`M`!0_Q8L#5E9
M,__I,`2#/MP``'4)5E?H(C%96>L%5^AY'%DS_XM>_M'CBH>E_[0`4(M>_M'C
MBH>D_[0`4/\6+`U96>GX`^L`Z;L!@W[^*'0#Z8T`@S[&``!U`^F#`(,^V``!
M=7R#/MP``'5U@S[<``!U'(L$2(D$"\!\#(M<"O]$"HH'M`#K!5;HHBM9ZP56
MZ!`768E&_CW__W42N"@`4#/`4/\6+`U96>G%`^LP@W[^0G0,@W[^2G0&@W[^
M2'41QP;8````QP;:````Z6\#ZPVX*`!0,\!0_Q8L#5E9Z24!@S[8``%U"8M^
M_NE0`^D5`8-^_CUU>(,^P@``='&#/MP``'5JBP1(B00+P'P,BUP*_T0*B@>T
M`.L%5N@0*UF)1OX]__]U$K@]`%`SP%#_%BP-65GI.@/K,X-^_C]U%%;HTQ19
M/?__=07I)0/K`^GM`NL9N#T`4#/`4/\6+`U965;_=O[HU2]96>G2`NF7`(-^
M_B1T`^F.`(,^Q@``=0/IA`"#/MP``'5]@S[<``!U'(L$2(D$"\!\#(M<"O]$
M"HH'M`#K!5;HA2I9ZP56Z/,568E&_CW__W42N"0`4#/`4/\6+`U96>FH`NLY
M@W[^0'0&@W[^0G41QP;8``$`QP;:````Z5@"ZQRX)`!0,\!0_Q8L#5E9_W;^
M,\!0_Q8L#5E9Z3H"ZP#I%`*#?OX/=0S'!MH```#I)@+I`@*#?OX.=0S'!MH`
M`0#I%`+I\`&#?OX;=`/IT0&#/MP``'4<BP1(B00+P'P,BUP*_T0*B@>T`.L%
M5NC8*5GK!5;H1A59B4;^/?__=1.X&P!0,\!0_Q8L#5E9Z?L!Z8P!@W[^)'0#
MZ;$`@S[<``!U'(L$2(D$"\!\#(M<"O]$"HH'M`#K!5;HC"E9ZP56Z/H468E&
M_CW__W4?N!L`4#/`4/\6+`U96;@D`%`SP%#_%BP-65GIH@'K7X-^_D!T!H-^
M_D)U$<<&V``!`,<&V@```.E2`>M"]P;&``(`=!''!M@``0#'!MH```#I.0'K
M*;@;`%`SP%#_%BP-65FX)`!0,\!0_Q8L#5E9_W;^,\!0_Q8L#5E9Z0X!Z=(`
M@W[^*'0#Z;P`@S[<``!U'(L$2(D$"\!\#(M<"O]$"HH'M`#K!5;HTBA9ZP56
MZ$`468E&_CW__W4?N!L`4#/`4/\6+`U96;@H`%`SP%#_%BP-65GIZ`#K:X-^
M_DEU$<<&V``"`,<&V@`"`.F>`.M4@W[^0G0,@W[^2G0&@W[^2'40QP;8````
MQP;:````ZWSK,O<&Q@`"`'00QP;8````QP;:````ZV3K&K@;`%`SP%#_%BP-
M65FX*`!0,\!0_Q8L#5E9ZPVX&P!0,\!0_Q8L#5E9ZQ:#?OX*=1#W!L8`!`!T
M",<&V````.L`@S[8``%U#/]V_E?_%BP-65GK"O]V_E?_%BH-65DS_^L`@S[<
M``!U'(L$2(D$"\!\#(M<"O]$"HH'M`#K!5;HT"=9ZP56Z#X368E&_CW__W0#
MZ7+U,\!0N/__4/\6*@U96;@!`.L`7UZ+Y5W#58OL5E>+=@C'!FX-``!6_W8&
MZ/\`65G'1@8``.F#`(-^!@!T*X,^M@``=2*!_J``?@+K&(/^0'T'QT8&``#K
M#,<&M@`!`,<&*@WR$NL`ZS2#_G]^+X'^H`!]#L<&M@`!`,<&*@WR$NL4@?[@
M`'T.QP:V``$`H2P-HRH-ZP")=@;K(.L`5O]V!NB)`%E9/?__=`>#/K8``'0"
MZTS'1@8``.L`@S[<``!U+8M>!(L'2(M>!(D'"\!\%8M>!%.+7PJ+PUO_1PJ+
MV(H'M`#K!_]V!.C2)EGK!_]V!.@^$EF+\#W__W0#Z3C_,__K'8J%+@VT`(E&
M!HJ%+PVT`(OP5O]V!O\6*@U964='.SYN#7S=ZP!?7EW#58OL@SYN#4!\!;C_
M_^LOBQYN#8I&!(B'+@W_!FX-BQYN#8I&!HB'+@W_!FX-@SYN#4!\!;C__^L#
MH6X-ZP!=PU6+[%97BW8$BWX&@_[_=`0+]G4"ZSF!_I\`?P6XX0#K`[AA`8O6
M`]8KT(OR@?^?`'T5@_]_?@6X(`#K`[@?`(O7*]"+^NL(B\<%@O^+^$975O\6
M+`U96;@!`.L`7UY=PU6+[%;_=@3_=@;HAPY968E&!*%RD8E&!H,^T```=0/I
MF0#_=@;_=@3HJ`M968OPN04`N^\5+CDW=`9#0^+WZWLN_V<*@S[@``%U+*&N
M"$"CK@@+P'T0BQZX"/\&N`BP#8@'M`#K#+BN"%"P#5#HGQU96<=&!@H`H:X(
M0*.N"`O`?1"+'K@(_P:X"+`*B`>T`.L,N*X(4+`*4.AS'5E9ZQOI]P''1@8*
M`,=&!```ZPS'1@8@`,=&!```ZP"#?@3^=5&AK@A`HZX("\!]$(L>N`C_!K@(
ML""(![0`ZPRXK@A0L"!0Z"D=65FAK@A`HZX("\!]$(L>N`C_!K@(L""(![0`
MZPRXK@A0L"!0Z`(=65GIB`&#?@3_=0;I?P'I>@&#?@0`=5KW1@:``'13H:X(
M0*.N"`O`?1"+'K@(_P:X"+".B`>T`.L,N*X(4+".4.B_'%E9H:X(0*.N"`O`
M?1&+'K@(_P:X"(I&!H@'M`#K#;BN"%"*1@90Z)8<65GI&@&#?@0`=`/IEP"#
M?@8*=2Z#/N```74GH:X(0*.N"`O`?1"+'K@(_P:X"+`-B`>T`.L,N*X(4+`-
M4.A6'%E9@WX&#70KH:X(0*.N"`O`?1&+'K@(_P:X"(I&!H@'M`#K#;BN"%"*
M1@90Z"<<65GK,(,^X@``=2FAK@A`HZX("\!]$8L>N`C_!K@(BD8&B`>T`.L-
MN*X(4(I&!E#H]1M96>MZ@WX&('P2@WX&?G\,@WX$('P&@WX$?GX(QP:V````
MZURAK@A`HZX("\!]$XI&!`R`BQZX"/\&N`B(![0`ZP^XK@A0BD8$#(!0Z*8;
M65FAK@A`HZX("\!]$XI&!@R`BQZX"/\&N`B(![0`ZP^XK@A0BD8&#(!0Z'D;
M65GK`%Y=PP``"0`*``T`(`#R$P$4EA/U$P$458OL5E>+=@16_W8&Z-0+65F+
M\*%RD8E&!H,^T```=0/ID0#_=@96Z/@(65F+^+D%`+N$&"XY/W0&0T/B]^MU
M+O]G"H,^X``!=2RAK@A`HZX("\!]$(L>N`C_!K@(L`V(![0`ZPRXK@A0L`U0
MZ.\:65G'1@8*`*&N"$"CK@@+P'T0BQZX"/\&N`BP"H@'M`#K#+BN"%"P"E#H
MPQI96>L5QT8&"@`S]NL,Z=(!QT8&(``S]NL`@_[^=5&AK@A`HZX("\!]$(L>
MN`C_!K@(L""(![0`ZPRXK@A0L"!0Z(`:65FAK@A`HZX("\!]$(L>N`C_!K@(
ML""(![0`ZPRXK@A0L"!0Z%D:65GI<P&#_O]U!NEK`>EF`0OV=`/IF`"#?@8*
M=2Z#/N```74GH:X(0*.N"`O`?1"+'K@(_P:X"+`-B`>T`.L,N*X(4+`-4.@0
M&EE9@WX&#70KH:X(0*.N"`O`?1&+'K@(_P:X"(I&!H@'M`#K#;BN"%"*1@90
MZ.$965GK,(,^X@``=2FAK@A`HZX("\!]$8L>N`C_!K@(BD8&B`>T`.L-N*X(
M4(I&!E#HKQE96>G'`(-^!B!\$(-^!GY_"H/^('P%@_Y^?@G'!K8```#IJ@"A
MK@A`HZX("\!])(O&2-'X4(/^7G\$L''K`K"Q6@+0BQZX"/\&N`B(%XK"M`#K
M'KBN"%"+QDC1^%"#_EY_!+!QZP*PL5H"T%+H0!E96:&N"$"CK@@+P'TK]\8!
M`'0.@WX&8'T$L!_K`K`@ZP*P?HI6!@+0BQZX"/\&N`B(%XK"M`#K);BN"%#W
MQ@$`=`Z#?@9@?02P'^L"L"#K`K!^BE8&`M!2Z.4865GK`%]>7<,```D`"@`-
M`"``JQ:N%D86HA:N%E6+[%;_=@3_=@;H00E968E&!*%RD8E&!H,^T```=0/I
M'@'_=@;_=@3H8@9968OPN04`NQ$?+CDW=`=#0^+WZ?\`+O]G"H,^U@``='>A
MK@A`HZX("\!]$(L>N`C_!K@(L!N(![0`ZPRXK@A0L!M0Z%@865FAK@A`HZX(
M"\!]$(L>N`C_!K@(L"B(![0`ZPRXK@A0L"A0Z#$865FAK@A`HZX("\!]$8L>
MN`C_!K@(H-4`B`>T`.L-N*X(4*#5`%#H"!A968,^X``!=2RAK@A`HZX("\!]
M$(L>N`C_!K@(L`V(![0`ZPRXK@A0L`U0Z-H765G'1@8*`*&N"$"CK@@+P'T0
MBQZX"/\&N`BP"H@'M`#K#+BN"%"P"E#HKA=96<<&U@```.L;QT8&"@#'1@0`
M`.L/QT8&(`#'1@0``.L#Z38%@WX$_W0#Z8$`@S[6``!T=Z&N"$"CK@@+P'T0
MBQZX"/\&N`BP&X@'M`#K#+BN"%"P&U#H5!=96:&N"$"CK@@+P'T0BQZX"/\&
MN`BP*(@'M`#K#+BN"%"P*%#H+1=96:&N"$"CK@@+P'T1BQZX"/\&N`B@U0"(
M![0`ZPVXK@A0H-4`4.@$%UE9Z:H$@WX$`'0#Z=``]T8&@`!U`^G&`(,^V``"
M=`J#/L@``'0#Z8D`@S[6``)T>Z&N"$"CK@@+P'T0BQZX"/\&N`BP&X@'M`#K
M#+BN"%"P&U#HKQ996:&N"$"CK@@+P'T0BQZX"/\&N`BP*(@'M`#K#+BN"%"P
M*%#HB!996:&N"$"CK@@+P'T0BQZX"/\&N`BP28@'M`#K#+BN"%"P25#H8199
M6<<&U@`"`(%F!G\`ZP"AK@A`HZX("\!]$8L>N`C_!K@(BD8&B`>T`.L-N*X(
M4(I&!E#H*Q996>G1`X-^!`!T`^D<`8,^U@``='VAK@A`HZX("\!]$(L>N`C_
M!K@(L!N(![0`ZPRXK@A0L!M0Z/$565FAK@A`HZX("\!]$(L>N`C_!K@(L"B(
M![0`ZPRXK@A0L"A0Z,H565FAK@A`HZX("\!]$8L>N`C_!K@(H-4`B`>T`.L-
MN*X(4*#5`%#HH1596<<&U@```(-^!@IU+H,^X``!=2>AK@A`HZX("\!]$(L>
MN`C_!K@(L`V(![0`ZPRXK@A0L`U0Z&<565F#?@8-="NAK@A`HZX("\!]$8L>
MN`C_!K@(BD8&B`>T`.L-N*X(4(I&!E#H.!596>LP@S[B``!U*:&N"$"CK@@+
MP'T1BQZX"/\&N`B*1@:(![0`ZPVXK@A0BD8&4.@&%5E9Z:P"@WX$_G0#Z4,!
M@S[6``!T?:&N"$"CK@@+P'T0BQZX"/\&N`BP&X@'M`#K#+BN"%"P&U#HS!19
M6:&N"$"CK@@+P'T0BQZX"/\&N`BP*(@'M`#K#+BN"%"P*%#HI1196:&N"$"C
MK@@+P'T1BQZX"/\&N`B@U0"(![0`ZPVXK@A0H-4`4.A\%%E9QP;6````H:X(
M0*.N"`O`?1"+'K@(_P:X"+`@B`>T`.L,N*X(4+`@4.A/%%E9@WX&"G4N@S[@
M``%U)Z&N"$"CK@@+P'T0BQZX"/\&N`BP#8@'M`#K#+BN"%"P#5#H&Q1968-^
M!@UT*Z&N"$"CK@@+P'T1BQZX"/\&N`B*1@:(![0`ZPVXK@A0BD8&4.CL$UE9
MZS"#/N(``'4IH:X(0*.N"`O`?1&+'K@(_P:X"(I&!H@'M`#K#;BN"%"*1@90
MZ+H365GI8`&#/M8``71]H:X(0*.N"`O`?1"+'K@(_P:X"+`;B`>T`.L,N*X(
M4+`;4.B)$UE9H:X(0*.N"`O`?1"+'K@(_P:X"+`DB`>T`.L,N*X(4+`D4.AB
M$UE9H:X(0*.N"`O`?1&+'K@(_P:X"*#4`(@'M`#K#;BN"%"@U`!0Z#D365G'
M!M8``0"#?@8@?`:#?@9^?@/ISP"#?@0@?`:#?@1^?@/IP`"AK@A`HZX("\!]
M$8L>N`C_!K@(BD8$B`>T`.L-N*X(4(I&!%#H[!)968-^!@IU+H,^X``!=2>A
MK@A`HZX("\!]$(L>N`C_!K@(L`V(![0`ZPRXK@A0L`U0Z+@265F#?@8-="NA
MK@A`HZX("\!]$8L>N`C_!K@(BD8&B`>T`.L-N*X(4(I&!E#HB1)96>LP@S[B
M``!U*:&N"$"CK@@+P'T1BQZX"/\&N`B*1@:(![0`ZPVXK@A0BD8&4.A7$EE9
MZP!>7<,```D`"@`-`"``U1G)&=T8O1G)&56+[%97BWX$BW8&@_X-=04SP.FH
M`H/^"'41@S[,``!^!/\.S`"X`0#ID@*#__]U#8,^S```=`:X"@#I@`*#_@IU
M;SDVS@!U(X,^S```=`['!LP```"X"@#I8@+K#,<&S````+@!`.E4`NM&]P;.
M`(``=`N)-LX`,\#I00+K,X,^S@`@=0<SP.DS`NLEB3;.`/\&S`"AS``[!M(`
M?PBX(`#I&@+K#,<&S````+@-`.D,`H/^#'4?QP;.``H`@S[,``!U!K@!`.GT
M`<<&S````+@*`.GH`0O_=06#_B!T&`O_=06#_@ET#X/__G0*@_\A=3Z#_B%U
M.8,^S@`@=04SP.F[`<<&S@`@`/\&S`"AS``[!M(`?PBX(`#IH@'K$L<&S@`@
M`,<&S````+@-`.F.`:'.`(O0B3;.``O_=0R!_J``?`R!_M\`?P:!#LX`@``+
M_W4%N`$`ZP.X`@`!!LP`H<P`.P;2`'\&N`$`Z5`!H=(`!0H`.P;,`'\5"_]U
M!;@!`.L#N`(`H\P`N`H`Z2\!"_]T`^FT`('^W@!U!K@!`.D<`8'^WP!U!K@!
M`.D0`8'^I`!U!K@!`.D$`8'^HP!U!K@!`.GX`('^H0!U!K@!`.GL`('^L`!U
M!K@!`.G@`('^H`!\$H'^WP!_#,<&S``!`+@*`.G(`(/^*71(@_Y==$.#_GUT
M/H/^+G0Y@_XL=#2#_B%T+X/^/W0J@_XO="6#_CIT((/^.W0;@_H*=`N#^B!T
M!O?"@`!T"\<&S``!`+@*`.M[N`$`ZW;K=(/_(75D@_XB=06X`0#K98/^(W4%
MN`$`ZUN#_B1U!;@!`.M1@_XE=06X`0#K1X/^)W4%N`$`ZSV#_BAU!;@!`.LS
M@_XI=06X`0#K*8/^*G4%N`$`ZQ^#_BMU!;@!`.L5@_XL=06X`0#K"\<&S``"
M`+@*`.L`7UY=PU6+[%97BW8$BWX&"_]T!('F?P")-G*1@___=06+Q^D@`8'G
M?P"#/KP``'4#Z:``"_]T3(/^(7T$B\;K&H/^3W\'B\8%+P#K#H/^?G\'B\8%
MT?_K`HO&B_"#_R%]!(O'ZQJ#_T]_!XO'!2\`ZPZ#_WY_!XO'!='_ZP*+QXOX
MZTSWQH``=4:#_D%]!(O&ZSN#_DU_!XO&!0T`ZR^#_EI_!XO&!?/_ZR.#_F%]
M!(O&ZQJ#_FU_!XO&!0T`ZPZ#_GI_!XO&!?/_ZP*+QHOPB39RD8,^P```=`F#
M_R-U!#/`ZV*#/L```'17@_\A=5*#_B%U+_<&P``"`'0,QP9RD2``,\#K/^L9
M]P;```0`=`W'!G*1(`"X_O_K*NL$B\?K).L>@_X@?AF#_G]]%("\2@(`=`V*
MA$H"M`"C<I$SP.L$B\?K`%]>7<-5B^R#[#!65\<&W````#/VB][1XXN'R@*)
M1OK'1M`]`,=&TC\`QT;^`@#I`0&+7@2+!TB+7@2)!PO`?!6+7@13BU\*B\-;
M_T<*B]B*![0`ZP?_=@3HP159B_B+7O[1XXU6T`/:B0<]__]T)(/_87P,@_]Z
M?P>+QP7@_^L"B\>+7OH#7OZ*%[8`.\)U`^F<`(M&^HE&^.M1QT;\`@#K%XM>
M^@->_(H'BU[X`U[\.@=T`NL+_T;\BT;\.T;^?.&+1OP[1OYU(X/_87P,@_]Z
M?P>+QP7@_^L"B\>+7OH#7OR*%[8`.\)U`NL01HO>T>.+A\H"B4;Z"\!UGX-^
M^@!T`NLK_W8$5^@?&EE9,_;K%8O>T>.-1M`#V/\W,\!0_Q8L#5E91CMV_GSF
MB\?K7/]&_HM>^@->_H`_('8#Z?'^H<@`HW"-"_9U!L<&R``!`(O>T>.+A]("
MH]P`@S[<`$)U'Z&T`*/$`(,^M```=1*+WM'C_[?*`O]V!.@I!5E9ZPK'!L0`
M`0"+Q^L`7UZ+Y5W#58OL@^P45E>+=@2AK@`[!K``=!6+'JX`_P:N`('C_P.*
MAW*-M`#IR02#/L0`!W4(H=P`B4;LZP7'1NP``(,^W`!1=`/I[P&#/L0``'0<
MBP1(B00+P'P,BUP*_T0*B@>T`.L%5N@D%%GK$HL>L@#_!K(`@>/_`XJ'<HVT
M`(E&_CW__W4&N/__Z6@$@W[^7W4&N"``Z5P$@W[^/70,@W[^/W0&BT;^Z4H$
MBT;LH]P`@W[^('\&BT;^Z3@$@S[$``!T'(L$2(D$"\!\#(M<"O]$"HH'M`#K
M!5;HL1-9ZQ*+'K(`_P:R`('C_P.*AW*-M`"+^#W__W4&N/__Z?8#@_\@?P6+
MQ^GL`X-^_C]U+H/_/74IBT;LH]@`H7"-H\@`BP1(B00+P'P,BUP*_T0*B@>T
M`.L%5NA5$UGIN`.#?OX_=2/'!MP`40"#/L0``'0)5E?H1QA96>L'_PZR`*&R
M`(M&_NF/`X,^Q```=!R+!$B)!`O`?`R+7`K_1`J*![0`ZP56Z`@36>L2BQZR
M`/\&L@"!X_\#BH=RC;0`B4;\/?__=0:X___I3`.#_R!_!8O'Z4(#QP;<`%$`
M@_\P?`R#_SE_!XO'!=#_ZR2#_T%\#(/_1G\'B\<%R?_K$X/_87P,@_]F?P>+
MQP6I_^L",\"Q!-/@4(-^_#!\#H-^_#E_"(M&_`70_^LJ@W[\07P.@W[\1G\(
MBT;\!<G_ZQ:#?OQA?`Z#?OQF?PB+1OP%J?_K`C/`B]!8`\+IO`*#/MP`0G0C
MQP;<````BP1(B00+P'P,BUP*_T0*B@>T`.L%5N@O$EGID@*AW`")1NZ+1NRC
MW`#K#(-^_O]U!KC__^EX`H,^Q```=!R+!$B)!`O`?`R+7`K_1`J*![0`ZP56
MZ/$16>L2BQZR`/\&L@"!X_\#BH=RC;0`B4;^/2``?K>#/L0``'0<BP1(B00+
MP'P,BUP*_T0*B@>T`.L%5NBT$5GK$HL>L@#_!K(`@>/_`XJ'<HVT`(OX/2``
M?QV#__]U!KC__^GT`8,^Q``'=`;'!M@```"+Q^GB`8-^_C]U-8/_/74PQP;8
M````ZP"+!$B)!`O`?`R+7`K_1`J*![0`ZP56Z$\168E&_CT@`'3>BT;^Z:<!
M@S[$``!T'(L$2(D$"\!\#(M<"O]$"HH'M`#K!5;H(!%9ZQ*+'K(`_P:R`('C
M_P.*AW*-M`")1OP](`!_'X-^_/]U!KC__^E>`8,^Q``'=`;'!M@```"+1OSI
M2P&#/L0``'0<BP1(B00+P'P,BUP*_T0*B@>T`.L%5NC$$%GK$HL>L@#_!K(`
M@>/_`XJ'<HVT`(E&^CT@`'\?@W[Z_W4&N/__Z0(!@S[$``=T!L<&V````(M&
M^NGO`(M&[J/<`/]V_N@H`EFZ/P`CT(E6]E?H&P)9NC\`(]")5O3_=OSH#`)9
MNC\`(]")5O+_=OKH_0%9NC\`(]")5O"+1O;1X-'@)?P`BU;TL033^H'B`P`+
MPHE&^(/_/71WBQZP`('C_P.*1OB(AW*-_P:P`(M&]+$$T^`E\`"+5O+1^M'Z
M@>(/``O"B4;X@W[\/71"BQZP`('C_P.*1OB(AW*-_P:P`(M&\K$&T^`EP`"+
M5O"!XC\`"\*)1OB#?OH]=!.+'K``@>/_`XI&^(B'<HW_!K``ZP6+1O[K%(L>
MK@#_!JX`@>/_`XJ'<HVT`.L`7UZ+Y5W#58OLBQZP`('C_P.*1@2(AW*-_P:P
M`(M&!.L`7<-5B^R#[`965XMV!(M^!J&N`*.R`*&N`*.P`.L3B@6+'K(`@>/_
M`XB'<HU'_P:R`(`]`'7HQT;\``"AL@")1OKID0"AL@`K!JX`J?\#=0/IIP"#
M?OX]=26#?OP_=1^+'K(`@>/_`XI&_HB'<HW_!K(`BT;ZH[(`N`$`Z:``@W[^
M*W0X@W[^+W0R@W[^/70L@W[^/W0F@W[^87P&@W[^>GX:@W[^07P&@W[^6GX.
M@W[^,'P&@W[^.7X"ZSZ+'K(`@>/_`XI&_HB'<HW_!K(`BT;^B4;\BP1(B00+
MP'P,BUP*_T0*B@>T`.L%5NB*#EF)1OX]__]T`^E*_XL>L@"!X_\#BD;^B(=R
MC?\&L@"AL@"CL`#'!MP``0"X`0#K`%]>B^5=PU6+[%97BWX$@_]`?A>#_UM]
M"8O'!;__B_#K!XO'!;G_B_#K&X/_+WX)B\<%!`"+\.L-@_\K=06^/@#K`[X_
M`(O&ZP!?7EW#58OLN*\#4+B^"%#HR0196;CZ`U"XO@A0Z+P$65FX`@10N+X(
M4.BO!%E9N$`$4+B^"%#HH@196;B(!%"XO@A0Z)4$65FXS`10N+X(4.B(!%E9
MN.0$4+B^"%#H>P196;@A!5"XO@A0Z&X$65FX6@50N+X(4.AA!%E9N'H%4+B^
M"%#H5`196;B4!5"XO@A0Z$<$65FXS`50N+X(4.@Z!%E9N/(%4+B^"%#H+019
M6;@0!E"XO@A0Z"`$65FX6P90N+X(4.@3!%E9N)<&4+B^"%#H!@196;CD!E"X
MO@A0Z/D#65FX_P90N+X(4.CL`UE9N"P'4+B^"%#HWP-96?\VK`#_-JH`N&('
M4+B^"%#HR@.#Q`C_-J@`N(\'4+B^"%#HN`.#Q`8SP.L`7<-5B^Q6,\!0_W8$
MZ+D+65F+\#W__W4"ZQKW1@8"`'0&]\8!`'4$,\#K"<<&D@`%`+C__UY=PU6+
M[(,^E`<@=06X`0#K$XL>E`?1XXM&!(F'=I'_!I0',\!=PU6+[%:+=@0+]GP%
M@_X4?`FX!@!0Z%P-ZP^+WM'CQX?>"?__5NAA"UE>7</#58OLZPJ+'I0'T>/_
MEW:1H90'_PZ4!PO`=>O_=@3H#-197<-5B^Q65XMV!+___SET#G0"ZV"#?`8`
M=!Z#/`!]"U;H5P!9"\!T`NM*]T0"!`!T!_]T".BE%EF`?`0`?`N*1`284.AM
M_UF+^,=$`@``QT0&``#'!```QD0$_X-\#`!T$S/`4/]T#.@A"%#H*!%9QT0,
M``"+QU]>7<-5B^Q65XMV!`OV=07H<P#K:SET#G0%N/__ZV.#/`!\*?=$`@@`
M=0J+Q@4%`#E$"G46QP0``(O&!04`.40*=0B+1`B)1`KK->LSBT0&`P1`B_B+
M!"O'B017BT0(B40*4(I$!)A0Z",(@\0&.\=T#O=$`@`"=0>!3`(0`.N:,\!?
M7EW#58OL3$Q65\=&_@``OQ0`OIX(ZQ+W1`(#`'0(5NA?_UG_1OZ#QA"+QT\+
MP'7GBT;^7UZ+Y5W#58OL3$Q65XMV"#/_QT;^```SR8O>1HH'BM`\<G4(OP$`
MN0$`ZR"`^G=U!;\"`^L(@/IA=0V_`@G'1OZ``+D"`.L$,\#K;XH$BM!&/"MT
M#8`\*W4C/'1T!#QB=1N`^BMU!(H$BM"+QR7\_PT$`(OXQT;^@`&Y`P"`^G1U
M!H'/`$#K'H#Z8G4&@<\`@.L/H08*)0#`"_B+QZD`@'0$@<E``,<&F@CW-HM>
M!HD_BUX$BT;^B0>+P5]>B^5=P@8`58OL@^P$5HMV"/]V!(U&_E"-1OQ0Z"O_
MB40""\!T'(!\!`!](_]V_/]V_O]V!NBL#(/$!HA$!`K`?0W&1`3_QT0"```S
MP.L_BD0$F%#H)`M9"\!T!8%,`@`"N``"4(5$`G0%N`$`ZP(SP%`SP%!6Z$8%
M@\0("\!T!U;HEOU9Z\3'1`P``(O&7HOE7<(&`%:^G@B`?`0`?`J+QH/&$#W>
M"7+P@'P$`'P$,\#K`HO&7L-5B^Q6Z-?_B_`+P'4$,\#K"E;_=@3_=@;H-?]>
M7<-5B^Q6BW8(.70.=`0SP.L/5N@Q_5E6_W8$_W8&Z!/_7EW#58OL5H-^!`!\
M">B1_XOP"\!U!#/`ZQ"*1@2(1`16,\!0_W8&Z.G^7EW#58OLN)$R4/]V!/]V
M!HU&"%#HIPY=PU6+[%97BUX$@S\`?0B+1P8#!T#K"HM>!(L'F3/"*\*+\(O(
MBUX$]T<"0`!T`NLOBUX$BW\*@S\`?1WK"4^+WX`_"G4!08O&3@O`=?#K$(O?
M1X`_"G4!08O&3@O`=?"+P5]>7<("`%6+[%:+=@16Z.K\60O`=`6X___K2H-^
M"@%U$(,\`'X+5NAV_YDI1@895@B!9`)?_L<$``"+1`B)1`K_=@K_=@C_=@:*
M1`284.BD"8/$"(/Z_W4*/?__=06X___K`C/`7EW#58OL@^P$5HMV!(I$!)A0
MZ'H$68E&_(E6_H,\`'T-5N@6_YD!1OP15O[K"U;H"?^9*4;\&5;^BU;^BT;\
M7HOE7<-5B^Q6H9(`.P94"GT0"\!\#(L>D@#1XXNW#`KK`[XI#%;_=@2X-PQ0
MN+X(4.BR_H/$"%Y=PU6+[%:+=@:+!$B)!%:*1@284.@%`%E97EW#58OL5HMV
M!HI&!**VD8,\_WTWBP1`B02+7`K_1`J@MI&(!_=$`@@`=!V`/K:1"G0'@#ZV
MD0UU#U;HR/M9"\!T!KC__^FY`.FQ`/=$`I``=0?W1`("`'4'@4P"$`#KXH%,
M`@`!@WP&`'1$@SP`=`M6Z)'[60O`=`+KQXM$!O?8B02+7`K_1`J@MI&(!_=$
M`@@`=!F`/K:1"G0'@#ZVD0UU"U;H7_M9"\!T`NN5ZTV`/K:1"G4?]T0"0`!U
M&+@!`%"X0`Q0BD0$F%#H1A&#Q`8]`0!U&+@!`%"XMI%0BD0$F%#H+A&#Q`8]
M`0!T#_=$`@`"=0B!3`(0`.E&_Z"VD;0`7EW#58OL5HMV!+BN"%!6Z._^65E>
M7<-5B^Q,3%97BWX&BW8$B7[^]T0""`!T)NL:5HM>"/]&"(H'F%#HP_Y963W_
M_W4%,\#I]P"+QT\+P'7?Z>H`]T0"0`!U`^F#`(-\!@!T93E\!G,H@SP`=`M6
MZ)+Z60O`=`+KS%?_=@B*1`284.B-$(/$!CO'<P+KM^FM`(L$`\=\&H,\`'4*
MN/__*T0&B03K"U;H6OI9"\!T`NN45_]V"/]T"NA/"(/$!HL$`\>)!`%\"NMU
M5_]V"(I$!)A0Z#T0@\0&.\=S`^EF_^M=@WP&`'1!ZS:+!$")!`O`?1:+7`K_
M1`I3BUX(_T8(B@=;B`>T`.L/5HM>"/]&"(H'4.C2_5E9/?__=0/I)O^+QT\+
MP'7#ZQ97_W8(BD0$F%#H6@*#Q`8[QW,#Z0?_BT;^7UZ+Y5W"!@!5B^RX``)0
M@WX&`'0$,\#K`[@"`%#_=@;_=@3HR@"#Q`A=PU6+[%97BW8&@WX$`'P2@WX$
M%'T,BUX$T>.#O]X)_W4%N`8`ZS.+QB4`P(OX.\9U)3T`P'0@BUX$T>.+M]X)
MBUX$T>.+QB7_/PO'B8?>"8O&)0#`ZP>X`0!0Z.@%7UY=PZ"B")A0Z!D&60O`
M=0:!)J`(__VX``)0A0:@"'0%N`$`ZP(SP%`SP%"XG@A0Z#8`@\0(H+((F%#H
MYP59"\!U!H$FL`C__;@``E"%!K`(=`6X`@#K`C/`4#/`4+BN"%#H!`"#Q`C#
M58OL5E>+=@2+?@HY=`YU#(-^"`)_!H'__W]V!KC__^FF`(,^1`P`=0Z!_JX(
M=0C'!D0,`0#K$X,^0@P`=0R!_IX(=0;'!D(,`0"#/`!T$;@!`%`SP#/24%)6
MZ('[@\0(]T0"!`!T!_]T".C(#EF!9`+S_\=$!@``B\8%!0")1`B)1`J#?@@"
M=#T+_W8YQP:8"!@W@WX&`'465^AG#UF)1@8+P'0'@4P"!`#K`^EM_XM&!HE$
M"HE$"(E\!H-^"`%U!8%,`@@`,\!?7EW#58OLN`$`4#/`,])04O]V!.CN!(/$
M"%W#58OL5HMV!@OV=0.^NI'&!`"X2`Q05NAP"%E9N`H`4(O&!0,`4#/`4/]V
M!.B(!8/$"+A,#%!6Z%`(65F+QEY=P@0`58OL5HMV!%:#/KB1_W4%N`(`ZP.X
M`0`!!KB1H;B14.B<_XOP,\!05NAB]EE9/?__==6+QEY=PU6+[('LB@!65XM&
M"$`]`@!S!3/`Z=(`BUX$T>/WA]X)`(!T$O]V"/]V!O]V!.A4#8/$!NFS`(M>
M!-'C@:?>"?_]BT8&B4;XBT8(B4;\ZU7_3OR+7OC_1OB*!XA&^SP*=03&!`U&
MBD;[B`1&C89V_XO6*]"!^H``?#&+UBO0B_I24/]V!.C]#(/$!HE&_CO'=!,+
MP',%N/__ZTJ+1@@K1OSK/>M`C89V_XOP@W[\`'6?C89V_XO6*]"+^HO""\!V
M)E*-AG;_4/]V!.BX#(/$!HE&_CO'=!`+P',"Z[F+1@@#1OXKQ^L#BT8(7UZ+
MY5W#5E<S_[Z>".L0]T0"`P!T!5;H^_59@\801X/_%'SK7U[#5E>_!`"^G@CK
M$/=$`@,`=`56Z%'V64^#QA`+_W7L7U[#58OL5E=5BW8$_"O`F;D*`+<`OY<'
MBAQ&]@$!=?B]``"`^RMT!H#[+74$18H<1H#[.7<N@.LP<BGWX0/#$M9TZ^L2
MB_JY"@#WX9>'T??BDI<#PQ/1BAQ&@/LY=P6`ZS!SX4U\!_?:]]B#V@!=7UY=
MPU6+[/]V!.B'_UE=PU6+[(M&!(O4@>H``CO"<P>CF@`SP.L)QP:2``@`N/__
M7<-5B^R+1@2+5@8#!IH`@](`B\@+TG40@<$``G(*.\QS!H<&F@#K"<<&D@`(
M`+C__UW#58OL_W8$Z*3_65W#58OLBT8$F5)0Z+?_65E=PU6+[(M."+1#BD8&
MBU8$S2%R`Y'K!%#H[0%=PU6+[+0^BUX$S2%R#-'CQX?>"?__,\#K!%#HSP%=
MPU6+[(/L!(M>!-'C]X?>"0`"=`6X`0#K3+@`1(M>!,TA<C[VPH!U-;@!0C/)
MB]'-(7(N4E"X`D(SR8O1S2&)1OR)5OY:67(9N`!"S2%R$CM6_G()=P4[1OQR
M`NNW,\#K!%#H:0&+Y5W#5E>_%`"^G@CK$XM$`B4``ST``W4%5NB@]%F#QA"+
MQT\+P'7F7U[#58OL5HMV!/=$`@`"=`/HR/__=`:+1`B)1`I0BD0$F%#H.@2#
MQ`:)!`O`?@B#9`+?,\#K'H,\`'4.BT0")7_^#2``B40"ZPC'!```@TP"$+C_
M_UY=P@(`58OL5HMV!(L$0(D$5N@$`%E>7<-5B^Q6BW8$@SP`?A"+!$B)!(M<
M"O]$"HH'Z8(`@SP`?`?W1`(0`70)@TP"$+C__^MO@4P"@`"#?`8`=`Q6Z%7_
M"\!T`NOFZ\3W1`(``G0#Z!S_N`$`4+C(D5"*1`284.A%!(/$!@O`=2"*1`28
M4.B5_ED]`0!T`NNOBT0")7_^#2``B40"ZZ7KHX`^R)$-=0?W1`)``'2Q@V0"
MWZ#(D;0`7EW#N)X(4.A6_UG#58OLM$2*1@:+7@2+3@J+5@C-(7(,@WX&`'4$
MB\+K!NL$4.@"`%W#58OL5HMV!`OV?!6#_EA^`[Y7`(DV4@R*A%0,F(OPZQ&+
MQO?8B_`](P!_Y<<&4@S__XDVD@"X__]>7<("`%6+[+@`1(M>!,TADB6``%W#
M58OLBUX$T>.!I]X)__VT0HI&"HM>!(M."(M6!LTA<@+K!5#HC/^97<-5B^R#
M[")65P:+?@H>!XM>"(/[)'=8@/L"<E.+1@R+3@X+R7T1@'X&`'0+Q@4M1_?9
M]]B#V0"-=M[C#Y$KTO?SD??SB!1&XPGK\2O2]_.(%$8+P'7UC4[>]]D#SOQ.
MB@0L"G,$!#KK`P)&!*KB[[``J@>+1@I?7HOE7<(,`%6+[(-^"`IU!HM&!)GK
M!8M&!#/24E#_=@;_=@BP`5"P85#H7O]=PU6+[/]V!O]V!/]V"/]V"K``4+!A
M4.A$_UW#58OL_W8&_W8$_W8(_W8*@WX*"G4%N`$`ZP(SP%"P85#H'_]=PU6+
M[%97C-B.P(M^!(MV!HM."-'I_/.E<P&DBT8$7UY=PU6+[(M.!+0\BU8&S2%R
M`NL$4.AP_EW"!`!5B^R+7@0KR2O2M$#-(5W"`@!5B^R#[`165XMV!O?&`,!U
M#*$&"B4`P(O6"]"+\O?&``%T>J$("B%&"(M&"*F``74'N`$`4.@B_C/`4/]V
M!.@3_%E9B4;^/?__=2GW1@B``'0$,\#K`[@!`(E&_O?&\`!T*?]V!#/`4.AJ
M_XOX"\!]$^FQ`/?&``1T([A0`%#HV?WIHP!7Z.?[6>L7_W8$_W;^Z$'_B_@+
MP'UJZ8@`QT;^``!6_W8$Z(0`65F+^`O`?%,SP%!7Z'O]65F)1ORI@`!T'H'.
M`"#WQ@"`=!XE_P`-(`!0N`$`4%?H6/V#Q`;K"O?&``)T!%?H!/^#?OX`=!3W
MQO``=`ZX`0!04/]V!.A3^X/$!@O_?!WWQ@`#=`6X`!#K`C/`B]:!XO_X"]"+
MW]'CB9?>"8O'7UZ+Y5W#58OL3$RP`8M.!O?!`@!U"K`"]\$$`'4"L`"+5@2Q
M\").!@K!M#W-(7(:B4;^BU[^T>.+1@8E__@-`(")A]X)BT;^ZP10Z.7\B^5=
MPU6+[(/L!%97BT8(0#T"`'(-BUX$T>/WA]X)``)T!3/`Z8P`_W8(_W8&_W8$
MZ(8`@\0&B4;^0#T"`'(-BUX$T>/WA]X)`(!T!8M&_NMBBT[^BW8&'@>+_HO>
M_*P\&G0M/`UT!:KB].L<XO`&4[@!`%"-1OU0_W8$Z#L`@\0&6P?\BD;]JCO[
M=0+KF>L@4[@!`%#WV1O`4%'_=@3HDOR#Q`B+7@31XX&/W@D``ELK^Y=?7HOE
M7<-5B^RT/XM>!(M."(M6!LTA<@+K!%#H%/Q=PU6+[%97_(M^!!X'B]<RP+G_
M__*NC77_BWX&N?__\J[WT2OYA_?WQ@$`=`*D2='I\Z5S`:227UY=PU6+[%:+
M5@2+=@:#^O]T-8,\`'T%N/__ZRV#9`+?BP1`B00]`0!^#/],"HM<"HK"B`?K
M#8O&!04`B40*BL*(1`6T`.L"B\)>7<-5B^RT08M6!,TA<@0SP.L$4.A\^UW#
MBL;H`@"*PM00AN#H`@"&X`20)Q1`)ZK#58OL@>R6`%97QT;N``#'1NQ0`,=&
MZ@``ZT97N?__,L#RKO?125_#-H@%1_Y.['XO4U%2!HV&:O\K^(V&:O]05_]V
M"/]6"@O`=07'1NH!`,=&[%```7[NC;YJ_P=:65O#!OR-OFK_B7[\BW[\BW8&
MK`K`=!(\)701-H@%1_Y.['_NZ*S_Z^GIZP.)=O"L/"5TYXE^_#/)B4[RB4[^
MB$[UQT;X___'1O;__^L!K#+DB]"+V(#K((#[8',3BI^U#(/[%W8#Z9X#T>,N
M_Z=<0^F4`X#]`'?X@T[^`>O0@/T`=^V#3OX"Z\6`_0!WXH!^]2MT`XA6]>NU
M@V;^W^L$@T[^(+4%ZZ>`_0!W2O=&_@(`=2F#3OX(M0'KD^E)`XM^!#:+!8-&
M!`*`_0)S$@O`>0;WV(-._@*)1OBU`^EO_X#]!'77B4;V_L7I8O^`_01SRK4$
MZ5C_DBPPF(#]`G<9M0*'1O@+P'S4T>"+T-'@T>`#P@%&^.DV_X#]!'6>AT;V
M"\!\N-'@B]#1X-'@`\(!1O;I&O^#3OX0Z6C_@4[^``&#9O[OZ5S_MPCK"K<*
MZPJW$+/I`MK&1O4`B%;[,]*(5OJ+?@0VBP7K$+<*QD;Z`8A6^XM^!#:+!9E'
M1XEV!O=&_A``=`4VBQ5'1XE^!(U^NPO`=2\+TG4K@W[V`'4IBW[\BT[XXQJ#
M^?]T%8M&_B4(`'0$LC#K`K(@BL+H#/[B^>E,_H-._@124%>*QYA0BD;Z4%/H
MIOD6!XM6]@O2?P/I\0#I_`"(5ON)=@:-?KJ+7@0V_S=#0XE>!/=&_B``=!`V
MBQ=#0XE>!!8'Z'[]L#JJ%@=:Z'7]-L8%`,9&^@"#9O[[C4ZZ*_F'SXM6]CO1
M?P*+T>F>`(EV!HA6^XM^!#:+!8-&!`(6!XU^NS+D-HD%N0$`Z;D`B78&B%;[
MBWX$]T;^(`!U#3:+/8-&!`(>!PO_ZPLVQ#V#1@0$C,`+QW4%'@>_K@SH-OT[
M3O9V`XM.]NM]B78&B%;[BWX$BT[V"\E]`[D&`%=1C5Z[4U*X`0`C1OY0BT;^
MJ0`!=`FX"`"#1@0*ZP>#1@0(N`8`4.A@!!8'C7Z[]T;^"`!T&(M6^`O2?A'H
MV?PF@#TM=0%)*]%^`XE6\HI&]0K`=!(F@#TM=`R#;O(!@U;R`$\FB`7HK_R+
M]XM^_(M>^+@%`"-&_CT%`'43BF;[@/QO=0V#?O(`?P7'1O(!`.L;@/QX=`6`
M_%AU$8-._D!+2X-N\@)]!<=&\@```T[R]T;^`@!U#.L&L"#H:/Q+.]E_]O=&
M_D``=`NP,.A7_(I&^^A1_(M6\@O2?B<KRBO:)HH$/"UT"#P@=`0\*W4')JSH
M,OQ)2X?*XP>P,.@G_.+YA\KC$BO9)JPVB`5'_D[L?P/H&OSB\`O;?@F+R[`@
MZ`3\XOGI1/R)=@:+?@3W1OX@`'4+-HL]@T8$`AX'ZP<VQ#V#1@0$N%``*D;L
M`T;N)HD%]T;^$`!T!T=')L<%``#I!?R+=O"+?ORP)>BX^ZP*P'7X@'[L4'T#
MZ+/[!X-^Z@!T!;C__^L#BT;N7UZ+Y5W""`"N/Y@_XS^C/Q%`&T!90&!`94#,
M/XY`;$!P0'1`"D&V05I!>D'P0BQ#+$,L0[X_Q#]5B^R+7@31X_>'W@D`"'03
MN`(`4#/`,])04O]V!.C,]H/$"+1`BUX$BTX(BU8&S2%R#U"+7@31XX&/W@D`
M$%CK!%#H6?9=PP````````````````!65XOTBUP&@^L$<@X['A@-=`7H0@#K
M`^@#`%]>PSD>%@UT(XMW`O8$`70&B388#>L@.S86#70-B][H5`"+1P*C&`WK
M#8O>,\"C%@VC&`VC&@U3Z(#S6\/_#SL>%@UT&(MW`HL$J`%U#P,'B02+/P/[
MB74"B][K`^@R`(L_`_N+!:@!=`'#`0>+]P/PB5P"B]^+?P8[WW0.B3X:#8MW
M!(EU!(E\!L/'!AH-``##BS8:#0OV=!"+?`:)7`:)702)?P:)=P3#B1X:#8E?
M!(E?!L-65XOTBT0&"\!T4@4%`'(V)?[_/0@`<P.X"`"#/A8-`'0?BQX:#0O;
M=`V+TSD'<QJ+7P8[VG7UZ&8`ZR'HB@#K'.@<`.L7,\#K$XOP@\8(.3=SZ>AK
M__\'B\,%!`!?7L-0,\!04.C`\EM;)0$`=`DSTE)0Z++R6UM84#/;4U#HI_);
M6SW__W04B]B)'A8-B1X8#5A`B0>#PP2+P\-;,\##4#/;4U#H@/);6SW__W06
MB]BA&`V)1P*)'A@-6$")!X/#!(O#PU@SP,,I!XOS`S>+_@/X0(D$B5P"B74"
M@\8$B\;#B^Q34%%0Z!7_6PO`=!\>!_R+^(MV_HL,@\8$5H/I!='I\Z6)1O[H
M)OY;BU[^@\0&PXO"@\((.]%W-8O1.QX8#74/B0?_!P/#4U#HU_%;6^L>B_L#
M^(E=`BO0*1>+]P/RB7P"0HD5B\N+W^@Y_HO9@\,$PU9758OLBUX(BT8*"\!T
M-PO;="V#ZP2+#TF+T(/"!8/B_H/Z"',#N@@`.\IR#'<%@\,$ZPCHA__K`^A1
M_XO#ZPM0Z&?^ZP13Z)+]6UU?7L/_)BH-``"/!B`-CP8B#8\&)`TNC!Y71HDV
M)@V)/B@-_(X&C@"^@``RY":L0(S%A]:3BS:(`$9&N0$`@#Z0``-R$8X&B@"+
M_K%_,L#RKN-N@/%_4(O!`\-`)?[_B_PK^')<B^<&'Q8'44GSI#+`JH[=A_*'
MV8O#B]!#Z!D`=P=R0.@2`'?Y/"!T"#P-=`0\"77H,L#KY`O`=`="J@K`=0%#
MAN`RP/GC%:Q)+")T#P0B/%QU!X`\(G4"K$D+]L/I#;M9`\HNCAY71HD>'`U#
M`]N+](OL*^MRYHOEB2X>#>,.B78`@\4"-JP*P.#Z=/`SP(E&`"Z.'E=&BS8F
M#8L^*`W_-B0-_S8B#:$<#:."`*$>#:.$`/\F(`T``````````D8T````$%E&
M`````````````%1U<F)O($,K*R`M($-O<'ER:6=H="`Q.3DP($)O<FQA;F0@
M26YT;"X`3G5L;"!P;VEN=&5R(&%S<VEG;FUE;G0-"D1I=FED92!E<G)O<@T*
M06)N;W)M86P@<')O9W)A;2!T97)M:6YA=&EO;@T*````````````````````
M``````````````````````````````#*D<J1````````````````V@(:`Q\#
M`````````````````0````````````````````$```````````!"0@``````
M````````````(2$A(R%6(5<A(B$F)7(E(24C)24E)R4I)6,E925G)4,A/"4B
M)20E)B4H)2HE*R4M)2\E,24S)34E-R4Y)3LE/24_)4$E1"5&)4@E2B5+)4PE
M325.)4\E4B55)5@E6R5>)5\E8"5A)6(E9"5F)6@E:25J)6LE;"5M)6\E<R$K
M(2P`````````````````````````````````````````````````````````
M````)2PE+B4P)3(E-"4V)3@E.B4\)3XE0"5")44E1R5)`````````````"50
M)5,E5B59)5P`````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M```````````````````````````````````````````````````E4254)5<E
M6B5=`````````````````````````````````````````````````````"PN
M`#H[/R$``"=@`%X`7P`````````````M`"]<``!\``!@)R(B*"D``%M=>WT\
M/@``````````*RT````]`#P^```````````````D```E(R8J0```````````
M?0.-`YX#``!1`$(`40```$-O<'ER:6=H="`H0RD@,3DX-RP@1E5*251352!,
M5$0N("A)+DEC:&EK87=A*2PQ.3DV(%,N($MO;F\L($-/5P`Q+C8R`#0O.38P
M.2]3:&EN:FD@2V]N;RP@0T]7`$UI>&5D($E33S@X-3DO2DE36#`R,#$O4TI)
M4R]%54,@;W5T<'5T(&ES(&YO="!A;&QO=V5D+@H`<@!W`&YK9BYO=70`=P`]
M/TE33RTX.#4Y+3$_43\`/3])4T\M,C`R,BU*4#]"/P`]/TE33RTR,#(R+4I0
M/U$_`%5304=%.B`@;FMF*&YK9C,R+'=N:V8L;FMF,BD@+5MF;&%G<UT@6VEN
M(&9I;&5=("XN(%MO=70@9FEL92!F;W(@+4\@9FQA9UT*`$9L86=S.@H`8BQU
M("`@("`@3W5T<'5T(&ES(&)U9F9E<G)E9"`H1$5&055,5"DL3W5T<'5T(&ES
M('5N8G5F9F5R<F5D"@!J+',L92`@("!/=71O=70@8V]D92!I<R!*25,@-R!B
M:70@*$1%1D%53%0I+"!3:&EF="!*25,L($%4)E0@2DE3("A%54,I"@!*+%,L
M12`@("!);G!U="!A<W-U;7!T:6]N(&ES($I)4R`W(&)I="`L(%-H:69T($I)
M4RP@050F5"!*25,@*$550RD*`'0@("`@("`@(&YO(&-O;G9E<G-I;VX*`&E?
M("`@("`@($]U='!U="!S97%U96YC92!T;R!D97-I9VYA=&4@2DE3+6MA;FII
M("A$149!54Q4($(I"@!O7R`@("`@("!/=71P=70@<V5Q=65N8V4@=&\@9&5S
M:6=N871E($%30TE)("A$149!54Q4($(I"@!R("`@("`@("![9&4O96Y]8W)Y
M<'0@4D]4,3,O-#<*`'8@("`@("`@(%-H;W<@=&AI<R!U<V%G90H`;5M"45T@
M("`@34E-12!D96-O9&4@6T(Z8F%S938T('-T<F5A;2Q1.G%U;W1E9"!S=')E
M86U="@!L("`@("`@("!)4T\X.#4Y+3$@*$QA=&EN+3$I('-U<'!O<G0*`&8@
M("`@("`@($9O;&1I;F<Z("UF-C`@;W(@+68*`%I;,"TR72`@($-O;G9E<G0@
M6#`R,#@@86QP:&%B970@=&\@05-#24D@(#$Z($MA;FMA:W4@=&\@<W!A8V4L
M,CH@,B!S<&%C97,*`%@L>"`@("`@($%S<W5M92!8,#(P,2!K86YA(&EN($U3
M+4MA;FII+"`M>"!P<F5S97)V97,@6#`R,#$*`$);,"TR72`@($)R;VME;B!I
M;G!U="`@,#H@;6ES<VEN9R!%4T,L,3H@86YY(%@@;VX@15-#+5LH)%TM6"PR
M.B!!4T-)22!O;B!.3`H`5"`@("`@("`@5&5X="!M;V1E(&]U='!U=`H`3R`@
M("`@("`@3W5T<'5T('1O($9I;&4@*$1%1D%53%0@)VYK9BYO=70G*0H`9"QC
M("`@("`@1&5L971E(%QR(&EN(&QI;F4@9F5E9"P@061D(%QR(&EN(&QI;F4@
M9F5E9`H`3F5T=V]R:R!+86YJ:2!&:6QT97(@5F5R<VEO;B`E<R`H)7,I(&9O
M<B!$3U,`"B5S"@`````@("`@("`@("`A(2$A(2`@("`@("`@("`@("`@("`@
M(`%`0$!`0$!`0$!`0$!`0$`"`@("`@("`@("0$!`0$!`0!04%!04%`0$!`0$
M!`0$!`0$!`0$!`0$!`0$0$!`0$!`&!@8&!@8"`@("`@("`@("`@("`@("`@(
M"`A`0$!`(```````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M`.(LXBSB+```"0(`````````````G@@```H"`0```````````*X(```"`@(`
M``````````"^"```0P(#````````````S@@``$("!````````````-X(````
M`/\```````````#N"`````#_````````````_@@`````_P````````````X)
M`````/\````````````>"0````#_````````````+@D`````_P``````````
M`#X)`````/\```````````!."0````#_````````````7@D`````_P``````
M`````&X)`````/\```````````!^"0````#_````````````C@D`````_P``
M`````````)X)`````/\```````````"N"0````#_````````````O@D`````
M_P```````````,X)`2`"(`(@!*`"H/______________________________
M_________P!`__\``%8*7@IV"I`*GPJS"L4*U0KJ"OP*&0LM"SP+4`L``%T+
M;`N2"Z(+L`O!"](+Y`L``````````````````````````/8+!`P5#"0`17)R
M;W(@,`!);G9A;&ED(&9U;F-T:6]N(&YU;6)E<@!.;R!S=6-H(&9I;&4@;W(@
M9&ER96-T;W)Y`%!A=&@@;F]T(&9O=6YD`%1O;R!M86YY(&]P96X@9FEL97,`
M4&5R;6ES<VEO;B!D96YI960`0F%D(&9I;&4@;G5M8F5R`$UE;6]R>2!A<F5N
M82!T<F%S:&5D`$YO="!E;F]U9V@@;65M;W)Y`$EN=F%L:60@;65M;W)Y(&)L
M;V-K(&%D9')E<W,`26YV86QI9"!E;G9I<F]N;65N=`!);G9A;&ED(&9O<FUA
M=`!);G9A;&ED(&%C8V5S<R!C;V1E`$EN=F%L:60@9&%T80!.;R!S=6-H(&1E
M=FEC90!!='1E;7!T960@=&\@<F5M;W9E(&-U<G)E;G0@9&ER96-T;W)Y`$YO
M="!S86UE(&1E=FEC90!.;R!M;W)E(&9I;&5S`$EN=F%L:60@87)G=6UE;G0`
M07)G(&QI<W0@=&]O(&)I9P!%>&5C(&9O<FUA="!E<G)O<@!#<F]S<RUD979I
M8V4@;&EN:P!-871H(&%R9W5M96YT`%)E<W5L="!T;V\@;&%R9V4`1FEL92!A
M;')E861Y(&5X:7-T<P!5;FMN;W=N(&5R<F]R`"5S.B`E<PH```T````````0
M5$U0`"XD)"0``````!,"`@0%!@@("!05!1/_%@41`O________________\%
M!?____________________\/_R,"_P______$___`@(%#P+___\3________
M__\C_____R/_$_\`*&YU;&PI```4%`$4%104%!0"`!0#!!0)!04%!04%!04%
M%!04%!04%!04%!0/%P\(%!04!Q06%!04%!04%!04#104%!04%!04%!00"@\/
D#P@*%!0&%!(+#A04$10,%!0-%!04%!04%```````````````
`
end
SHAR_EOF
  $shar_touch -am 1006160596 'nkf.exe' &&
  chmod 0755 'nkf.exe' ||
  echo 'restore of nkf.exe failed'
  shar_count="`wc -c < 'nkf.exe'`"
  test 22176 -eq "$shar_count" ||
    echo "nkf.exe: original size 22176, current size $shar_count"
fi
exit 0
